
function n2txt(gelen_sayi,para_birimi)
{
	gelen_sayi = gelen_sayi.toString();
	var alt_para_birimi='';
	var bir = " Bir ";
	var iki = " İki ";
	var uc = " Üç ";
	var dort = " Dört ";
	var bes = " Beş ";
	var alti = " Altı ";
	var yedi = " Yedi ";
	var sekiz = " Sekiz ";
	var dokuz = " Dokuz ";
	var sifir = " Sıfır ";
	var on = " On ";
	var yirmi = " Yirmi ";
	var otuz = " Otuz ";
	var kirk = " Kırk ";
	var elli = " Elli ";
	var altmis = " Altmış ";
	var yetmis = " Yetmiş ";
	var seksen = " Seksen ";
	var doksan = " Doksan ";
	var yuz = " Yüz ";
	var bin = " Bin ";
	var milyon = " Milyon ";
	var milyar = " Milyar ";
	var trilyon = " Trilyon ";
	var katrilyon = " Katrilyon ";

	
		if(para_birimi == '' || para_birimi == undefined)
			para_birimi = "YTL";
	
	
	if(para_birimi == 'YTL')
		alt_para_birimi = 'YKr';
	else if (para_birimi == 'TL')
		alt_para_birimi = 'Kr';
	else if (para_birimi == 'USD')
		alt_para_birimi = 'Cent';
	else if (para_birimi == 'EURO')
		alt_para_birimi = 'EURO Cent';
	if(list_len(gelen_sayi,'.') == 2)
	{
		tam_kisim = list_getat(gelen_sayi,1,'.');
		ondalik_kisim = list_getat(gelen_sayi,list_len(gelen_sayi,'.'),'.');
		ondalik_kisim = js_mid(ondalik_kisim,1,2);//wrk_round sız gelenler için son bi kontrol virgüllü kısm için
		if(ondalik_kisim.length == 1)
			ondalik_kisim = ondalik_kisim+0;
	}
	else
	{
		tam_kisim = gelen_sayi;
		ondalik_kisim = '';
	}
	tam_donen = '';
	ondalik_donen = '';
	sayi_uzunluk = tam_kisim.length;
	for(on_rakam=1;on_rakam <= ondalik_kisim.length;on_rakam++)
	{
		my_on_rakam = js_mid(ondalik_kisim,on_rakam,1);
		if(on_rakam == 1)
		{
			switch(my_on_rakam)
			{
				case '1':ondalik_donen = ondalik_donen + on;break;
				case '2':ondalik_donen = ondalik_donen + yirmi;break;
				case '3':ondalik_donen = ondalik_donen + otuz;break;
				case '4':ondalik_donen = ondalik_donen + kirk;break;
				case '5':ondalik_donen = ondalik_donen + elli;break;
				case '6':ondalik_donen = ondalik_donen + altmis;break;
				case '7':ondalik_donen = ondalik_donen + yetmis;break;
				case '8':ondalik_donen = ondalik_donen + seksen;break;
				case '9':ondalik_donen = ondalik_donen + doksan;break;
				case '0':ondalik_donen = ondalik_donen;break;
			}
		}
		if(on_rakam == 2)
		{
			switch(my_on_rakam)
			{
				case '1':ondalik_donen = ondalik_donen + bir;break;
				case '2':ondalik_donen = ondalik_donen + iki;break;
				case '3':ondalik_donen = ondalik_donen + uc;break;
				case '4':ondalik_donen = ondalik_donen + dort;break;
				case '5':ondalik_donen = ondalik_donen + bes;break;
				case '6':ondalik_donen = ondalik_donen + alti;break;
				case '7':ondalik_donen = ondalik_donen + yedi;break;
				case '8':ondalik_donen = ondalik_donen + sekiz;break;
				case '9':ondalik_donen = ondalik_donen + dokuz;break;
				case '0':ondalik_donen = ondalik_donen;break;
			}
		}
	}
	for(rakam=1;rakam <= tam_kisim.length;rakam++)
	{
		onceki_sayi = 0;
		iki_onceki_sayi = 0;
		my_sira = parseFloat(sayi_uzunluk) - parseFloat(rakam) + 1;
		my_mod = my_sira % 3;
		my_rakam = js_mid(tam_kisim,rakam,1);
		if(my_sira > 3 && my_sira < 7)
		{
			if((parseFloat(sayi_uzunluk)-parseFloat(rakam)) == 1)
			{
				onceki_sayi = js_mid(tam_kisim,parseFloat(rakam)-1,1);
				iki_onceki_sayi = 0;
			}
			else if((parseFloat(sayi_uzunluk)-parseFloat(rakam)) >= 2 && rakam > 1)
			{
				onceki_sayi = js_mid(tam_kisim,parseFloat(rakam)-1,1);
					if(rakam != 2)
						iki_onceki_sayi = js_mid(tam_kisim,parseFloat(rakam)-2,1);
			}
		}
		if(my_mod == 1)
		{
			switch(my_rakam)
			{
				case '1': if(my_sira != 4 || (my_sira == 4 && (onceki_sayi != 0 || iki_onceki_sayi != 0))) tam_donen = tam_donen + bir;break;
				case '2':tam_donen = tam_donen + iki;break;
				case '3':tam_donen = tam_donen + uc;break;
				case '4':tam_donen = tam_donen + dort;break;
				case '5':tam_donen = tam_donen + bes;break;
				case '6':tam_donen = tam_donen + alti;break;
				case '7':tam_donen = tam_donen + yedi;break;
				case '8':tam_donen = tam_donen + sekiz;break;
				case '9':tam_donen = tam_donen + dokuz;break;
				case '0':tam_donen = tam_donen;break;
			}
		}
		else if(my_mod == 2)
		{
			switch(my_rakam)
			{
				case '1':tam_donen = tam_donen + on;break;
				case '2':tam_donen = tam_donen + yirmi;break;
				case '3':tam_donen = tam_donen + otuz;break;
				case '4':tam_donen = tam_donen + kirk;break;
				case '5':tam_donen = tam_donen + elli;break;
				case '6':tam_donen = tam_donen + altmis;break;
				case '7':tam_donen = tam_donen + yetmis;break;
				case '8':tam_donen = tam_donen + seksen;break;
				case '9':tam_donen = tam_donen + doksan;break;
				case '0':tam_donen = tam_donen;break;
			}
		}
		else if(my_mod == 0)
		{
			switch(my_rakam)
			{
				case '1':tam_donen = tam_donen + yuz; break;
				case '2':tam_donen = tam_donen + iki + yuz;break;
				case '3':tam_donen = tam_donen + uc + yuz;break;
				case '4':tam_donen = tam_donen + dort + yuz;break;
				case '5':tam_donen = tam_donen + bes + yuz;break;
				case '6':tam_donen = tam_donen + alti + yuz;break;
				case '7':tam_donen = tam_donen + yedi + yuz;break;
				case '8':tam_donen = tam_donen + sekiz + yuz;break;
				case '9':tam_donen = tam_donen + dokuz + yuz;break;
				case '0':tam_donen = tam_donen;break;
			}
		}
		if(my_sira > 3)
		{
			bir_sonraki = js_mid(tam_kisim,parseFloat(rakam)+1,1);
			iki_sonraki = js_mid(tam_kisim,parseFloat(rakam)+2,1);
			if(my_sira == 6 && my_rakam != 0 && bir_sonraki == 0 && iki_sonraki == 0) tam_donen = tam_donen + bin;
			else if(my_sira == 5 && my_rakam != 0 && bir_sonraki == 0) tam_donen = tam_donen + bin;
			else if(my_sira == 4 && my_rakam != 0) tam_donen = tam_donen + bin;
			
			else if(my_sira == 9 && my_rakam != 0 && bir_sonraki == 0 && iki_sonraki == 0) tam_donen = tam_donen + milyon;
			else if(my_sira == 8 && my_rakam != 0 && bir_sonraki == 0) tam_donen = tam_donen + milyon;
			else if(my_sira == 7 && my_rakam != 0) tam_donen = tam_donen + milyon;
			
			else if(my_sira == 12 && my_rakam != 0 && bir_sonraki == 0 && iki_sonraki && 0) tam_donen = tam_donen + milyar;
			else if(my_sira == 11 && my_rakam != 0 && bir_sonraki == 0) tam_donen = tam_donen + milyar;
			else if(my_sira == 10 && my_rakam != 0) tam_donen = tam_donen + milyar;
			
			else if(my_sira == 15 && my_rakam != 0 && bir_sonraki == 0 && iki_sonraki == 0) tam_donen = tam_donen + trilyon;
			else if(my_sira == 14 && my_rakam != 0 && bir_sonraki == 0) tam_donen = tam_donen + trilyon;
			else if(my_sira == 13 && my_rakam != 0) tam_donen = tam_donen + trilyon;
			
			else if(my_sira == 18 && my_rakam != 0 && bir_sonraki == 0 && iki_sonraki == 0) tam_donen = tam_donen + katrilyon;
			else if(my_sira == 17 && my_rakam != 0 && bir_sonraki == 0) tam_donen = tam_donen + katrilyon;
			else if(my_sira == 16 && my_rakam != 0) tam_donen = tam_donen + katrilyon;
		}
	}
	my_text = tam_donen + para_birimi;
	if(ondalik_donen.length != 0 && (ondalik_donen != '00' || ondalik_donen != '0'))
		my_text = my_text + ondalik_donen + alt_para_birimi;
	//document.getElementById('showw').innerHTML = ' Modul Dil fbx_Settings Ayarlanmamış!!! :' + my_text.bold();
	return my_text;
}
function chk_period(field1,field1_name)
{
	
}
function ajax_request_script(html){
	var hd = document.getElementsByTagName("head")[0];
	var re = /(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig;
	var srcRe = /\ssrc=([\'\"])(.*?)\1/i;
	var typeRe = /\stype=([\'\"])(.*?)\1/i;
	var match;
	while(match = re.exec(html)){
		var attrs = match[1];
		var srcMatch = attrs ? attrs.match(srcRe) : false;
		var textToEval = "";
		if(srcMatch && srcMatch[2]){
			var s = document.createElement("script");
			s.src = srcMatch[2];
			var typeMatch = attrs.match(typeRe);
			if(typeMatch && typeMatch[2]){
			s.type = typeMatch[2];
			}
			hd.appendChild(s);
		}else if(match[2] && match[2].length > 0){
			textToEval = match[2].replace("<!--", "").replace("-->", "").replace("//-->", "");
			if(window.execScript) {
				window.execScript(textToEval);
			} else {
				window.eval(textToEval);
			}
		}
	}
	return html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig, "");
}

/*
AJAX XHR nesnesi döndürür. Tarayıcı AJAX desteklemiyorsa,
kullanıcıya hata mesajı gösterir. Geriye olumsuz bir değer döndürür.
*/

function GetAjaxConnector() {
	// Kullanım: myAjaxConnector = GetAjaxConnector();
    var xmlHttp=null;
    try{
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }catch (e){
        // Internet Explorer
        try{
            xmlHttp=new ActiveXObject('Msxml2.XMLHTTP');
        }catch (e){
            xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
        }
    }
	if (xmlHttp==null) {
		alert ('Tarayıcınız Ajax Desteklemiyor!');
		return;
    }
    return xmlHttp;
}

function GetFormData(form) {
	var args = [];
	for (var i=0; i<form.elements.length; i++) {
		if (!form.elements[i].name) continue;
		if (form.elements[i].tagname = 'input' && (form.elements[i].type == 'checkbox' || form.elements[i].type == 'radio') && !form.elements[i].checked) continue;
		
		if (form.elements[i].tagname = 'select' && form.elements[i].multiple) {
			for (j=0; j<form.elements[i].options.length; j++) {
				if (form.elements[i].options[j].selected) args.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].options[j].value));
			}
		} else {
			args.push(form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value));
		}
	}
	return args.join("&");
}

function AjaxRequest(ajaxConnector, url, method, data, callback) {
	if (ajaxConnector!=null) {
		ajaxConnector.open(method,'/'+url+'&ajax=1', true);
		ajaxConnector.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2000 00:00:00 GMT');
		//ajaxConnector.setRequestHeader('Content-Type','text/xml; charset=ISO-8859-9');
		//ajaxConnector.setRequestHeader('Content-Type','text/xml; charset=windows-1254');
		ajaxConnector.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
		if (data != null) {
			ajaxConnector.setRequestHeader('Content-length', data.length);//alert(data)//form ile gelen değerleri görmek için alert'i açın eksik değer varmı kontrol edebilirsiniz.;
		}
		ajaxConnector.setRequestHeader('Connection', 'close');
		/*
		Bu satır önemlidir. Zira, ColdFusion is_ajax_requesy() fonksiyonu, gelen bu request'i inceler.
		Aşağıdaki header sayesinde, request'in bir ajax request olduğuna karar verir
		*/
		ajaxConnector.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
		ajaxConnector.onreadystatechange=callback;
		ajaxConnector.send(data);
		return true;
	}
	return false;
}
function AjaxFormSubmit(formName,messageBoxId,showError,watingMessage,successMessage,load_url,load_div,load_script) 
{
	var form;
	if (formName.split) {
		form=document.forms[formName];
	} else {
		form=formName;
	}
	//form.submit(); // Eğer ajax işlemi düzgün çalışmıyorsa action sayfasındaki hatayı görebilmek için form'u normal şekilde submit edin (yani bu kısmı açın)
	var ajaxConn=GetAjaxConnector();
	var messageBox=document.getElementById(messageBoxId);
	var request=AjaxRequest(ajaxConn, form.action, form.method, GetFormData(form), function() {
	if (ajaxConn.readyState==4 && ajaxConn.status == 200) {
		if(load_script)
			messageBox.innerHTML =ajax_request_script(ajaxConn.responseText);
		if (!successMessage) {successMessage="<strong style='color:black'>Kaydedildi!</strong>";}
		messageBox.innerHTML ="<strong style='color:black'>"+ successMessage + "</strong>";
			if(load_url && load_div)//eger 2.ci div calistirmak isteniyorsa
			AjaxPageLoad(load_url,load_div,1);
	} 
	else if (ajaxConn.readyState==4) {
		if (showError && showError==true) {
			messageBox.innerHTML=ajaxConn.responseText;
		} else {
			messageBox.innerHTML = "<strong style='color:red'>WorkCube Hata! Sistem yöneticisine başvurun.</strong>";
		}
	}
});
	if(request) {
		if (!watingMessage) {watingMessage="<strong style='color:black'>Kaydediliyor...</strong>";}
		messageBox.innerHTML ="<strong style='color:black'>"+ watingMessage + "</strong>";
		return true;
	} else {
		return false;
	}
}

/*
Adresi belirtilen sayfayı request eder. İçeriğini sayfada istenilen yerde gösterir.
Parametreler:
url: request edilecek sayfanın adresi
target: yüklenen sayfanın içeriğinin gösterileceği yer. Bir element'in (örn: div) ID'si veya AJAX window object.
error_detail: yüklenen sayfada sorun varsa, CF error ekranda gösterilsin mi. Varsayılan: false
loader_message: sayfa yüklenirken, ekranda gösterilecek yazı. Varsayılan: 'Yükleniyor...'
*/



var deger_ = 0;

function AjaxPageLoad(url,target,error_detail,loader_message,li_id){
	if(document.getElementById(target).parentNode.parentNode.style.display != 'none')// Ajaxın açılacağı divin  üzerinde bulun tr ye ait style görünmez olduğunda yükleme yapmasın
	{
		function ajax_tab(li_id)
			{
				var ullist=li_id.parentNode.getElementsByTagName("li");//gelen li nin üstü olan ul nin içinde olan li lerin listesi
				for (var i=0; i<ullist.length; i++) //ul içindeki lileri döndürüyoruz
				{
					if(li_id.id == ullist[i].id)//eğer tıklanan  li_id ise classını değiştiriyoruz.
					ullist[i].className="selected";
					else//degilse classını boşaltıyoruz.
					ullist[i].className=""
				}
			}
		function set_html(target,html)
			{
				deger_ = deger_ + 1;
				//object gönderilmişse, AJAX windowa content yüklenecek demektir.
				if(typeof(target) == 'object'){
					target.setBody(html);
					target.render();
					target.center();
				//IDsi gönderilen elemente yüklenecek demektir
				} else 
					{
						try
						{
						document.getElementById(target).innerHTML = html;
						}
						catch(err)
						{
						return false;
						}
					}
			}
		var ajaxConn=GetAjaxConnector();
		
		var url_len=list_len(url,'=');
		if(url_len > 3)
			{
			new_url = list_getat(url,1,'&');
			for(u_l=2;u_l<=url_len;u_l++)
				{
					var new_variable = list_getat(list_getat(url,u_l,'&'),1,'=');
					var new_value = encodeURIComponent(list_getat(list_getat(url,u_l,'&'),2,'='));
					new_url+='&'+new_variable+'='+new_value;
				}
			}
		else
			{
			new_url = url;
			}
		
		
		var request=AjaxRequest(ajaxConn,new_url,"get", null, function() {
			
			if ((ajaxConn.readyState==4 && ajaxConn.status == 200)) {
				if(li_id)//li id gönderilmiş ise
				ajax_tab(li_id);
				set_html(target, ajax_request_script(ajaxConn.responseText));
			} else if (ajaxConn.readyState==4) {
				if (error_detail == true) {
					set_html(target, ajaxConn.responseText);
				} else {
					set_html(target, "<strong style='color:red'>WorkCube Hata! Sistem yöneticisine başvurun.</strong>");
				}
			}
		});
		if(request) {
			if(loader_message == undefined) loader_message ="Yükleniyor..";
			set_html(target,"<div style='background:url(/images/loading.gif) no-repeat; padding:3px; text-align:left; font-weight:bold;color:F66633;'>&nbsp;&nbsp;"+loader_message+"</div>");
			return true;
		} else {
			return false;
		}
	}
}
/* pop upları sayfanın tam ortasında açar... pencere boyutları önceden belirleniyor..*/
function windowopen(theURL,winSize) { /*v3.0*/
//fonsiyon 3 parametrede alabiliyor 3. parametre de isim yollana bilir ozaman aynı pencere tekrar acilmaz
	if (winSize == 'page') 					{ myWidth=750 ; myHeight=500 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'list') 			{ myWidth=700 ; myHeight=555 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'medium') 			{ myWidth=600 ; myHeight=470 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'small') 			{ myWidth=400 ; myHeight=300 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'date') 			{ myWidth=275 ; myHeight=190 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'project') 			{ myWidth=800 ; myHeight=620 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'large') 			{ myWidth=615 ; myHeight=550 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'horizantal') 		{ myWidth=950 ; myHeight=300 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'list_horizantal')	{ myWidth=1100 ; myHeight=400 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'wide') 			{ myWidth=980 ; myHeight=600 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'wide2') 			{ myWidth=1100 ; myHeight=600 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'longpage') 		{ myWidth=1100 ; myHeight=500 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'page_horizantal') 	{ myWidth=800 ; myHeight=500 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'video') 			{ myWidth=490 ; myHeight=445 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
	else if (winSize == 'wwide') 			{ myWidth=1600 ; myHeight=860 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }  
	else if (winSize == 'long_menu') 		{ myWidth=200 ; myHeight=500 ; features = 'scrollbars=0, resizable=0' ; }
	else if (winSize == 'adminTv') 			{ myWidth=1040 ; myHeight=870 ; features = 'scrollbars=1, resizable=1, menubar=0' ; }
	else if (winSize == 'userTv') 			{ myWidth=565 ; myHeight=487 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
    else if (winSize == 'video_conference')	{ myWidth=740 ; myHeight=610 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
    else if (winSize == 'white_board')		{ myWidth=1000 ; myHeight=730 ; features = 'scrollbars=0, resizable=1, menubar=0' ; }
 	else if (winSize == 'wwide1') 			{ myWidth=1200 ; myHeight=700 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else { myWidth=400 ; myHeight=500 ; features = 'scrollbars=0, resizable=0' ; }

	if(window.screen)
	{
		var myLeft = (screen.width-myWidth)/2;
		var myTop =  (screen.height-myHeight)/2;
		
		features+=(features!='')?',':''; 
		features+=',left='+myLeft+',top='+myTop; 
	}
	
  	if (arguments[2]==null)
		window.open(theURL,'',features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight); 
	else		
		window.open(theURL,arguments[2],features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight); 
}

function ajaxwindow(theURL,winSize) {
	if (winSize == 'page') 		{ myWidth=750 ; myHeight=500 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'list') 		{ myWidth=700 ; myHeight=555 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'medium') 		{ myWidth=600 ; myHeight=470 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'small') 		{ myWidth=400 ; myHeight=300 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'date') 		{ myWidth=275 ; myHeight=190 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'project') 		{ myWidth=800 ; myHeight=620 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'large') 		{ myWidth=615 ; myHeight=550 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'horizantal') 	{ myWidth=950 ; myHeight=300 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'wide') 		{ myWidth=980 ; myHeight=600 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'longpage') 	{ myWidth=950 ; myHeight=500 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'page_horizantal') { myWidth=850 ; myHeight=500 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'video') 		{ myWidth=480 ; myHeight=400 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
	else if (winSize == 'wwide') 		{ myWidth=1600 ; myHeight=860 ; features = 'scrollbars=1, resizable=1, menubar=1' ; }
	else if (winSize == 'long_menu') 	{ myWidth=200 ; myHeight=500 ; features = 'scrollbars=0, resizable=0' ; }
	else if (winSize == 'adminTv') 		{ myWidth=1040 ; myHeight=870 ; features = 'scrollbars=1, resizable=1, menubar=0' ; }
    else if (winSize == 'userTv') 		{ myWidth=565 ; myHeight=487 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
    else if (winSize == 'video_conference')	{ myWidth=740 ; myHeight=610 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
	else if (winSize == 'radio') 		{ myWidth=250 ; myHeight=100 ; features = 'scrollbars=1, resizable=1, menubar=0' ; }
    else if (winSize == 'white_board')	{ myWidth=1000 ; myHeight=730 ; features = 'scrollbars=0, resizable=0, menubar=0' ; }
	else { myWidth=400 ; myHeight=500 ; features = 'scrollbars=0, resizable=0';}
	
	if(window.screen){
		var myLeft = (screen.width-myWidth)/2;
		var myTop =  (screen.height-myHeight)/2;
	}
	customFunctionCreateWindow(theURL,myWidth,myHeight,myLeft,myTop);
}

function MM_preloadImages()  /*v3.0*/
{
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
	
function hide(id){
	document.getElementById(id).style.display='none';
}
function show(id){
	document.getElementById(id).style.display = '';
}
function show_hide(id){
	if (document.getElementById(id).style.display == '' || document.getElementById(id).style.display == 'block'){
		hide(id);
	} else {
		show(id);
	}
}
function gizle(id){
	id.style.display='none';
}
function goster(id){
	id.style.display='';
}
function gizle_goster(id){
	if (id.style.display=='')
	{
		id.style.display='none';
	} else {
		id.style.display='';
	}
}
/*table gizleme - gösterme  / imaj değişikliği yapıyor*/
function gizle_goster_img(id,id2,txt){
	if (id.style.display==''){
		id.style.display='none';
		id2.style.display='';
		txt.style.display='none';
	} else {
		id.style.display='';
		id2.style.display='none';
		txt.style.display='';
	}
}

/* 
 parametre 1 : field_name.value
 parametre 2 : alan adı
 Verilen degiskenin boş değil ise en az 8 karakter içermesini kontrol eder
 alan eğer 1/1/2002 ise bunu 01/01/2002 yapar 
 alan eğer 1.1.2002 ise bunu 01.01.2002 yapar 
 arzu bt 06 2004
*/
function fix_date_value(field)
{
	field_tarih = field;
	if ((field_tarih.length > 0) && (field_tarih.length < 8) )
		{
			alert(' Tarih alanını kontrol ediniz !');
			return false;
		}		
	if (field_tarih.length >= 8)
		{
		if (field_tarih.indexOf('.') != -1)
			{
				if (field_tarih.indexOf('.') == 1)
					field_tarih = '0' + field_tarih;
				if (field_tarih.lastIndexOf('.') == 3)
					field_tarih = field_tarih.substr(0,3) + '01' + field_tarih.substr(3,5);
				if (field_tarih.lastIndexOf('.') == 4)
					field_tarih = field_tarih.substr(0,3) + '0' + field_tarih.substr(3,6);
			}
		else if (field_tarih.indexOf('/') != -1)
			{
			if (field_tarih.indexOf('/') == 1)
				field_tarih = '0' + field_tarih;
			if (field_tarih.lastIndexOf('/') == 3)
				field_tarih = field_tarih.substr(0,3) + '01' + field_tarih.substr(3,5);
			if (field_tarih.lastIndexOf('/') == 4)
				field_tarih = field_tarih.substr(0,3) + '0' + field_tarih.substr(3,6);
			}
		else
			{
				alert(' alanını kontrol ediniz ! ' + field_tarih.length + '');
				return false;
			}
		}
	if ((field_tarih.length > 0) && (field_tarih.length < 10))
		{
			alert(' alanını kontrol ediniz ! ' + field_tarih.length + '');
			return false;
		}
	return(field_tarih);
}

/* 
 parametre 1 : form_name.field_name
 parametre 2 : alan adı
 Verilen alanın boş değil ise en az 8 karakter içermesini kontrol eder
 alan eğer 1/1/2002 ise bunu 01/01/2002 yapar 
 alan eğer 1.1.2002 ise bunu 01.01.2002 yapar 
*/
function fix_date(field,name)
{
	if ( (field.value.length > 0) && (field.value.length < 8) )
		{
		alert(name + ' alanını kontrol ediniz !');
		return false;
		}		
	if (field.value.length >= 8)
		{
		if (field.value.indexOf('.') != -1)
			{
			/*liste '.' ile oluşturulmuş*/
			if (field.value.indexOf('.') == 1)
				field.value = '0' + field.value;
			if (field.value.lastIndexOf('.') == 3)
				field.value = field.value.substr(0,3) + '01' + field.value.substr(3,5);
			if (field.value.lastIndexOf('.') == 4)
				field.value = field.value.substr(0,3) + '0' + field.value.substr(3,6);
			}
		else if (field.value.indexOf('/') != -1)
			{
			/*liste '/' ile oluşturulmuş*/
			if (field.value.indexOf('/') == 1)
				field.value = '0' + field.value;
			if (field.value.lastIndexOf('/') == 3)
				field.value = field.value.substr(0,3) + '01' + field.value.substr(3,5);
			if (field.value.lastIndexOf('/') == 4)
				field.value = field.value.substr(0,3) + '0' + field.value.substr(3,6);
			}
		else
			{
			alert(name + ' alanını kontrol ediniz ! ' + field.value.length + 'karakter girdiniz!');
			return false;
			}
		}
	if ((field.value.length > 0) && (field.value.length < 10))
		{
		alert(name + ' alanını kontrol ediniz ! ' + field.value.length + 'karakter girdiniz!');
		return false;
		}
	return true;	
}

/* 
	tarih1 ===> document.assetp_reserve.startdate gibi bir form alanı olmalı
	tarih2 ===> document.assetp_reserve.finishdate gibi bir form alanı olmalı
	saat1 ===> document.assetp_reserve.starttime gibi bir form alanı olmalı
	saat2 ===> document.assetp_reserve.finishtime gibi bir form alanı olmalı
	tarih1 > tarih2 kontrol edilir
	msg hata durumunda alert edilecek mesaj
	ergün koçak
*/
function time_check(tarih1, saat1, dakika1, tarih2, saat2, dakika2, msg)
{
	f = true;	
	f = ( fix_date(tarih1,tarih1.name) && fix_date(tarih2,tarih2.name) );	
		
	tarih1_ = tarih1.value.substr(6,4) + tarih1.value.substr(3,2) + tarih1.value.substr(0,2);
	tarih2_ = tarih2.value.substr(6,4) + tarih2.value.substr(3,2) + tarih2.value.substr(0,2);

	if (saat1.value.length < 2) saat1_ = '0' + saat1.value; else saat1_ = saat1.value;
	if (dakika1.value.length < 2) dakika1_ = '0' + dakika1.value; else dakika1_ = dakika1.value;
	if (saat2.value.length < 2) saat2_ = '0' + saat2.value; else saat2_ = saat2.value;
	if (dakika2.value.length < 2) dakika2_ = '0' + dakika2.value; else dakika2_ = dakika2.value;

	tarih1_ = tarih1_ + saat1_ + dakika1_;
	tarih2_ = tarih2_ + saat2_ + dakika2_;	
	
	if (tarih1_ >= tarih2_) 
		{
		alert(msg);
		tarih1.focus();
		return false;
		}
	else
		{				
		return f;
		}
}

/* 
tarih1 ===> document.assetp_reserve.startdate gibi bir form alanı olmalı
tarih2 ===> document.assetp_reserve.finishdate gibi bir form alanı olmalı
msg ===> hata durumunda alert edilecek mesaj
is_equal ===> 1 olursa esitlik kontrolu de yapilir.
tarih1 > tarih2  veya tarih1 = tarih2 kontrol edilir
*/
function date_check(tarih1, tarih2, msg, is_equal)
{
	/*alert(tarih1);
	alert(tarih2);
	alert(msg);alert(is_equal);*/
	fix_date(tarih1,tarih1.name);
	fix_date(tarih2,tarih2.name);
	if(is_equal == undefined)
		is_equal = 0;
	tarih1_ = tarih1.value.substr(6,4) + tarih1.value.substr(3,2) + tarih1.value.substr(0,2);
	tarih2_ = tarih2.value.substr(6,4) + tarih2.value.substr(3,2) + tarih2.value.substr(0,2);
	
	if (tarih1_ > tarih2_ || (is_equal == 1 && tarih1_ == tarih2_)) 
	{
		if (msg != '')
		{
			alert(msg);
			tarih1.focus();
		}
		else
		{
			alert('Hata Mesajı Ayarlanmamış !');
			tarih1.focus();
		}
		return false;
	}
	else
		return true;
}

/*
11/06/2004 Arzu BT
Burada field degil value degerleri ile  
tarih1 tarih2 den kucuk olmamasi kontrolu yapilir.	
*/
function global_date_check_value(tarih1, tarih2, msg)
{
	tarih1 = fix_date_value(tarih1);
	tarih2 = fix_date_value(tarih2);
	if(tarih1.length==10 && tarih2.length==10)
	{
		tarih1_ = tarih1.substr(6,4) + tarih1.substr(3,2) + tarih1.substr(0,2);
		tarih2_ = tarih2.substr(6,4) + tarih2.substr(3,2) + tarih2.substr(0,2);
		if ( tarih2_ < tarih1_ || tarih2.substr(6,4) > tarih1.substr(6,4)) 
		{
			if (msg != '')
				alert(msg);
			else
				alert('Hata Mesajı Ayarlanmamış !');
			return false;
		}
		else
			return true;
	}
	else 
	{
		alert("Lütfen Tarih Formatını Düzeltiniz !");
		return false;
	}
}
/* Hidden alanlarda focus problemi olmasın diye yazıldı. Onur P. 03012005 */
function date_check_hiddens(tarih1, tarih2, msg)
{
	tarih1_ = tarih1.value.substr(6,4) + tarih1.value.substr(3,2) + tarih1.value.substr(0,2);
	tarih2_ = tarih2.value.substr(6,4) + tarih2.value.substr(3,2) + tarih2.value.substr(0,2);
	
	if (tarih1_ > tarih2_) 
		{
		if (msg != '')
			{
			alert(msg);
			}
		else
			{
			alert('Hata Mesajı Ayarlanmamış !');
			}
		return false;
		}
	else
		return true;
}
function filterNum(str,no_of_decimal) 
{
	/*form submit edilmeden önce float veya integer alanların temizliği için*/
	if (str.length == 0) return '';
	if(!no_of_decimal && no_of_decimal!=0) no_of_decimal=2;
	strCheck = '-0123456789,';
	newStr = '';
	for(var i=0; i < str.length; i++) if (strCheck.indexOf(str.charAt(i)) != -1) newStr += str.charAt(i);/*i=0 ifadesi var i=0 oldu.*/
	newStr = newStr.replace(',', '.');
	while(newStr.indexOf(',') > 0) newStr = newStr.replace(',','');
	return wrk_round(newStr,no_of_decimal);
}

function commaSplit(str,no_of_decimal,is_round)
{
	/* float degerler icin zaten uygun calisir, no_of_decimal kadar hane default yuvarlar,
	yuvarlamamak icin mutlaka no_of_decimal girmeli ve is_round argument da false olmalidir*/
	if(str.length==0) return '';
	if(!is_round && is_round != false) is_round=true;/*yuvarlama girilmemis veya girilmis ama false degilse ellemeyin*/
	if(!no_of_decimal && no_of_decimal!=0) no_of_decimal=2; /* if dogru ellemeyin */
	if(is_round) str = wrk_round(str,no_of_decimal);
	negatif_flag = 0;
	str = str.toString();
	if(parseFloat(str) < 0) {negatif_flag = 1;str = str.replace('-','');}
	if (str.indexOf(',')>0)/*sadece YTL gecisi icin gecici olarak calisiyor, silinmeli*/
		{
		alert('commaSplit e verilen '+str+' degeri'+' float a cevrilerek verilmelidir.\r -filterNum() ve f2() konbinasyonları kullanılabilir-\rYine de değeriniz düzeltildi (HS)');
		str = filterNum(f2(filterNum(str)));
		}
	textFormat_1='';
	textFormat_2='';
	temp_virgul = str.indexOf('.');
	virgul = '';
	if(temp_virgul >= 0 && no_of_decimal > 0)
		{
		virgul = ',';
		textFormat_2 = str.substr(temp_virgul+1,str.length);
		if(textFormat_2.length > no_of_decimal)
			textFormat_2 = textFormat_2.substr(0,no_of_decimal);
		else
			for (var txtf1 = textFormat_2.length+1;txtf1<=no_of_decimal;txtf1++)
				textFormat_2 = textFormat_2+'0';
		}
	else if(temp_virgul < 0 && no_of_decimal > 0)/* if dogru ellemeyin */
		{
		virgul = ',';
		for (var txtf1=1;txtf1<=no_of_decimal;txtf1++)
			textFormat_2 = textFormat_2+'0';
		}
	nokta_koy = 0;
	if(temp_virgul==0)
		textFormat_1 = 0;
	else if(temp_virgul>3)
		for (var k = temp_virgul-1; k>=0 ; k--){
		textFormat_1 = str.substr(k,1) + textFormat_1;
		nokta_koy++;
		if (nokta_koy%3==0 && k!=0) textFormat_1 = '.'+textFormat_1;
		}
	else if(temp_virgul>0)
		textFormat_1 = str.substr(0,temp_virgul);
	else if(temp_virgul<0)
		for (var k=str.length-1; k>=0 ; k--){
		textFormat_1 = str.substr(k,1) + textFormat_1;
		nokta_koy++;
		if (nokta_koy%3==0 && k!=0) textFormat_1 = '.'+textFormat_1;
		}
	textFormat = textFormat_1+virgul+textFormat_2;
	if(negatif_flag) return '-'+textFormat;
	return textFormat;
}

function formatcurrency(fld,e) 
{
	return FormatCurrency(fld,e);
}
function FormatCurrency(fld,e,no_of_decimal) 
{
	/*modified 20051225*/
	if(!e) return false;/*if(!e) var e = window.event;*/
	if(!no_of_decimal && no_of_decimal!=0) no_of_decimal=2;
	var whichCode = (window.Event) ? e.which : e.keyCode;/*klavyede basilan tusun nosu , e.keyCode:IE, e.which:NN*/
	/*klavyede basilan tusu gormek istersek alert(String.fromCharCode(whichCode));*/
	key_spec_codes = "'13','16','17','35','36','37','39','109','189'";/*sirasiyla enter,shift,ctrl,end,home,left,right tuslari (belki 189 yani tire veya negatif kontrol edilmeli)*/
	if(key_spec_codes.search("'" + whichCode + "'")>=0) return true; 
	if(whichCode==32)
		{/*space (bosluk) basilirsa hepsi temizlensin*/
		while(fld.value.indexOf(' ') > 0)
			fld.value = fld.value.replace(' ','');
		return false;
		}
	if(fld.value==',' || fld.value=='-') {fld.value = '';return false;}
	if(fld.value.indexOf(',')>0)
		{
		/*diger key kodlar = 188 ve 110:virgul,8:back space,46:del, tus takiminin iki virgulune de izin var*/
		var temp = fld.value.length-fld.value.indexOf(',')-1;
		if(temp == 0)/*son eleman virgulse ve back space veya del tuslanmissa veya decimal yoksa virgulu de silsin*/
			fld.value = (whichCode==8 || whichCode==46 || no_of_decimal==0) ? commaSplit(filterNum(fld.value,temp),temp) : commaSplit(filterNum(fld.value,temp),temp)+',';
		else if(temp < no_of_decimal)
			fld.value = commaSplit(filterNum(fld.value,temp),temp);
		else if(temp > no_of_decimal)
			/* bu durumda girilen degerin istenen decimale kadar olan kismini fonksiyonlardan gecirecegiz*/
			fld.value = commaSplit(filterNum(fld.value.substr(0,fld.value.indexOf(',')+1+no_of_decimal),no_of_decimal),no_of_decimal);
		else
			fld.value = commaSplit(filterNum(fld.value,no_of_decimal),no_of_decimal);
		}
	else
		fld.value = commaSplit(filterNum(fld.value),0);
	return false;
}


function trim(inputString) {
   /*Removes leading and trailing spaces from the passed string. Also removes
     consecutive spaces and replaces it with one space. If something besides
     a string is passed in (null, custom object, etc.) then return the input.*/
   if (typeof inputString != "string") { return inputString; }
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { /*Check for spaces at the beginning of the string*/
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { /*Check for spaces at the end of the string*/
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { /*Note that there are two spaces in the string - look for multiple spaces within the string*/
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); /*Again, there are two spaces in each of the strings*/
   }
   return retValue; /*Return the trimmed string back to the user*/
} /*Ends the "trim" function*/

/*Ekleyen Ömür*/
/*
 *Kullanım : CheckEurodate(değer,alan);
 *
 *return değeri : true veya false
 *değer : text alanına girilen değer
 *alan : text formatında alan adı
 *
 *örnek : 
 *1.return CheckEurodate(search.invoice_date.value,'Fatura Tarihi');
 *2.if(!CheckEurodate(search.invoice_date.value,'Fatura Tarihi')) return false;
 *
*/ 
function CheckEurodate(object_value,field)
{
	if (object_value.length == 0)
		return true;
	isplit = object_value.indexOf('/');
	if (isplit == -1)
		isplit = object_value.indexOf('.');
	if (isplit == -1 || isplit == object_value.length){
		alert(field + ' Hatalı!');
		return false;
		}
	sDay = object_value.substring(0, isplit);
	monthSplit = isplit + 1;
	isplit = object_value.indexOf('/', monthSplit);
	if (isplit == -1)
		isplit = object_value.indexOf('.', monthSplit);
	if (isplit == -1 ||  (isplit + 1 )  == object_value.length){
		alert(field + ' Hatalı!');
		return false;
		}
	sMonth = object_value.substring((sDay.length + 1), isplit);
	sYear = object_value.substring(isplit + 1);
	result = true;
	if (!(sMonth))
		result = false;
	else
	if (!_CF_checkrange(sMonth, 1, 12))
		result = false;
	else
	if (!(sYear))
		result = false;
	else
	if (!_CF_checkrange(sYear, 1900, 2099))
		result = false;
	else
	if (!(sDay))
		result = false;
	else
	if (!_CF_checkday(sYear, sMonth, sDay))
		result = false;
	else
		result = true;	
	if(!result)
		alert(field + ' Hatalı!');
	return result;		
}

function _CF_numberrange(object_value, min_value, max_value)
{
	if (min_value != null)
	{
		if (object_value < min_value) return false;
	}
	if (max_value != null)
	{
		if (object_value > max_value) return false;
	}
	return true;
}

function _CF_checknumber(object_value)
{
	if (object_value.length == 0)
		return true;
	var start_format = " .+-0123456789";
	var number_format = " .0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;
	check_char = start_format.indexOf(object_value.charAt(0));
	if (check_char == 1)
		decimal = true;
	else if (check_char < 1)
		return false;

	for (var i = 1; i < object_value.length; i++)
	{
		check_char = number_format.indexOf(object_value.charAt(i));
		if (check_char < 0)
			return false;
		else if (check_char == 1)
		{
			if (decimal)
				return false;
			else
				decimal = true;
		}
		else if (check_char == 0)
		{
			if (decimal || digits)	
				trailing_blank = true;
		}
		else if (trailing_blank)
			return false;
		else
			digits = true;
	}
	return true
}

function _CF_checkrange(object_value, min_value, max_value)
{
	if (object_value.length == 0) return true;
	if (!_CF_checknumber(object_value)) return false;
	else return (_CF_numberrange((eval(object_value)), min_value, max_value));
	return true;
}

function _CF_checkday(checkYear, checkMonth, checkDay)
{
	maxDay = 31;
	if (checkMonth == 4 || checkMonth == 6 ||
		checkMonth == 9 || checkMonth == 11)
		maxDay = 30;
	else if (checkMonth == 2)
	{
		if (checkYear % 4 > 0)
			maxDay =28;
		else if (checkYear % 100 == 0 && checkYear % 400 > 0)
			maxDay = 28;
		else
			maxDay = 29;
	}
	return _CF_checkrange(checkDay, 1, maxDay);
}

function list_len(gelen,delim)
/* cf deki listlen in javascript hali*/
{
	if(!delim) delim = ',';
	if(gelen.length == 0)
		return 0;
	else
		return gelen.split(delim).length;
}

function list_find(listem,degerim,delim)
{
	var kontrol=0;
	if(!delim) delim = ',';
	var listem_1=listem.split(delim);
	for (var m=0; m<listem_1.length; m++)
		if(listem_1[m]==degerim)
		{
			kontrol=1;
			break;
		}
	if(kontrol) 
		return m+1; 
	else 
		return 0;
}

function list_getat(gelen,number,delim)
/* cf deki listgetat in javascript hali*/
/*Düzenleme 20060405 */
{
	if(!delim) delim = ',';
	gelen_1=gelen.split(delim);
	if((gelen.length == 0) || (number > gelen_1.length) || (number < 1))
		return '';
	else
		return gelen_1[number-1];
}

function list_setat(listem,position,degerim,delim)
/* cf deki list_Setat in javascript hali*/
/*oluşturma 20060808 */
{ 
	var listem_2='';
	if(!delim) delim = ',';
	var listem_1=listem.split(delim);
	for (var m=0; m<listem_1.length; m++)
		if(position-1==m)
		{
				if(m==0)
					listem_2=degerim;
				else
					listem_2=listem_2+','+degerim;
		}
		else
		{
			if(m==0)listem_2=listem_1[m];
			else listem_2=listem_2+','+listem_1[m]
		}
	return listem_2;
}

function workcube_showHideLayers() { /*v3.0*/
	var i,p,v,obj,args=workcube_showHideLayers.arguments;
	
	for (i=0; i<(args.length-2); i+=3)
		if ((obj=findObj(args[i]))!=null) {
			v=args[i+2];
			if (obj.style) {
			obj=obj.style;
			v=(v=='show')?'visible':(v='hide')?'hidden':v;
		}
		obj.visibility=v;
	}
}

function wrk_round(ValToRnd, no_of_decimal){
	/*Aldigi degerler matematik deger olmalidir.
	Bunun sonucunu ekranda gormek icin cogu zaman commaSplit e vermek yeterlidir*/
	if(!no_of_decimal && no_of_decimal!=0) no_of_decimal=2;
	/* ValToRnd= filterNum(ValToRnd); */
	decimal_carpan = Math.pow(10,no_of_decimal);
	if(ValToRnd!=0) return (Math.round(ValToRnd*decimal_carpan)/decimal_carpan);
	else return 0;
	/*return f2(ValToRnd);*/
}

function f1(temp_str)
{
	return filterNum(temp_str);
	/* 20041213 bu niye yazilmiski !!!! "f1(" ifadeleri duzelince bu da silinsin...
	if (temp_str == undefined) return '';
	temp_str = temp_str.toString();	
	while (temp_str.indexOf('.') >= 0)
		{
		yer = temp_str.indexOf('.');
		temp_str = temp_str.substr(0,yer) + '' + temp_str.substr(yer+1, temp_str.length-yer-1);
		}
	if (temp_str.indexOf(',') >= 0)
		{
		yer = temp_str.indexOf(',');
		temp_str = temp_str.substr(0,yer) + '.' + temp_str.substr(yer+1, temp_str.length-yer-1);
		}
	return temp_str;
	*/
}

function f2(temp_str)
{
	if (temp_str.length == 0) return '';
	temp_str = temp_str.toString();
	if (temp_str.indexOf('.') >= 0)
		{
		yer = temp_str.indexOf('.');
		temp_str = temp_str.substr(0,yer) + ',' + temp_str.substr(yer+1, temp_str.length-yer-1);
		}
	return temp_str;
}

function date_add(dpart,number,d)
{
	/* 20051203 usage : date_add('m',3,'30/11/2005'),date_add('d',-2,'30/11/2005')
	cf teki gibi calisiyor ve ayni argumanlari aliyor : dpart 'd' = gun, dpart 'm' = ay
	d tarih gg/aa/yyyy veya gg.aa.yyyy olabilir, yil 2 hane girilebilir*/
	if(number == 0) return d;
	if(!d || !dpart || !number) return false;
	if(d.split('/').length==3) d = d.split('/');
	else if(d.split('.').length==3) d = d.split('.');
	else return false;
	if(d[2].length == 2){
		var y = new Date();
		d[2] = y.getFullYear().toString().substr(0,2) + d[2];//yil 2 hane girilirse basina bu yilin ilk iki karakterini aliyoruz
		}
	var d = new Date(d[2],d[1]-1,d[0]);//javascript aylari 0-11 araliginda tutuyor
	if(dpart == 'd')
		d.setDate(d.getDate()+number);//gun eklenmek istenmis
	else if(dpart == 'm'){
    	if(d.getDate() > 28 && d.getMonth() == 0){//gün 28den büyük girilmiş ise... ve aylardan ocak ise 1 ay eklendiğinde sapıtıyordu o yüzden gün olarak ekleme yapıyoruz.
        	d.setDate(d.getDate()+29);
            d = d.getDate()+'/'+(d.getMonth()+1)+'/'+d.getFullYear();return d;
        }    
		d.setMonth(d.getMonth()+number);//ay eklenmek istenmis
    }    
	d = d.getDate()+'/'+(d.getMonth()+1)+'/'+d.getFullYear();
	return d;
}
function datediff(date1,date2,a)
{
	/*
	20071220 SM
	İki tarih arasındaki farku bulur. Son değişkene göre 30 a göre modunu alır.
	usage:
	datediff(date1,date2,1)------İki tarihin farkını alıp 30 a göre modunu sonuç olarak döndürür(standart vade hesapları için)
	datediff(date1,date2,0)------ İki tarih arasındaki net farkı bulur.
	*/
	if(!date1 || !date2) return false;
	date1=date1.replace(/\./g,'/');
	date1=date1.replace(/-/g,'/');
	date1=date1.replace(/\\/g,'/');
	date2=date2.replace(/\./g,'/');
	date2=date2.replace(/-/g,'/');
	date2=date2.replace(/\\/g,'/');
	var one_day=1000*60*60*24; 
	var x=date1.split("/"); 
	var y=date2.split("/");
	var date1=new Date(x[2],(x[1]-1),x[0]);
	var date2=new Date(y[2],(y[1]-1),y[0])
	var month1=x[1]-1;
	var month2=y[1]-1;
	var diff=Math.ceil((date2.getTime()-date1.getTime())/(one_day)); 
	if(a == 1 && diff > 30)
		var diff = diff - (diff % 30);
	return(diff);
}
function wrk_query(str_query,data_source,maxrows)
{
	/*
	by  Workcube
	Created 20060315
	Modified 20060324
	Usage:
		my_query = query('SELECT COL1,COL2 FROM TABLE1 WHERE COL2=1');
		veya
		my_query = query('SELECT COL1,COL2 FROM TABLE1 WHERE COL2=1','dsn2');
		veya
		my_query = query('SELECT COL1,COL2 FROM TABLE1 WHERE COL2=1 ORDER BY COL2 DESC','dsn2',1);
		ifadesi ile my_query degiskeni cfquery ile donen sonucun tamamen aynisi bir javascript query degeri alir
		data_source : optional , default olarak 'dsn' kullaniliyor
		maxrows : optional , default olarak 0 ataniyor, 0 olunca query sonucundaki tum kayitlar gelir
	*/
	var new_query=new Object();
	var req;
	if(!data_source) data_source='dsn';
	if(!maxrows) maxrows=0;
	function callpage(url) {
		req = false;
		if(window.XMLHttpRequest)
			try
				{req = new XMLHttpRequest();}
			catch(e)
				{req = false;}
		else if(window.ActiveXObject)
			try {req = new ActiveXObject("Msxml2.XMLHTTP");}/*burasi*/
			catch(e)
				{
				try {req = new ActiveXObject("Microsoft.XMLHTTP");}
				catch(e)
					{req = false;}
				}
		if(req)
			{
			req.onreadystatechange = function ()
				{
				if (req.readyState == 4 && req.status == 200)
					try
						{
							eval(req.responseText);
							new_query = get_js_query;/*alert('Cevap:\n\n'+req.responseText);*/}
					catch(e)
						{new_query = false;/*20060619 alert('DB Sorgunuz ile ilgili problem olustu!\n\nDsn: '+data_source+'\n\nmaxrows: '+maxrows+'\n\nSorgu: '+str_query);new_query = false;*/}
				}
			req.open("post", url+'&xmlhttp=1', false);
			req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			req.setRequestHeader('pragma','nocache');
			req.send('str_sql='+encodeURI(str_query)+'&data_source='+data_source+'&maxrows='+maxrows);
			}
		
	}
	//TolgaS 20070124 objects yetkisi olmayan partnerlar var diye fuseaction objects2 yapildi
	callpage('/index.cfm?fuseaction=objects2.emptypopup_get_js_query');
	//alert(new_query);
	return new_query;
}

function workdata(qry,prmt,maxrows)
{
	var new_query=new Object();
	var req;
	if(!qry) return false;
	if(prmt == undefined) prmt='';
	if(maxrows == undefined) maxrows='';
	function callpage(url)
	{
		req = false;
		if(window.XMLHttpRequest)
			try
			{
				req = new XMLHttpRequest();
			}
			catch(e)
			{
				req = false;
			}
		else if(window.ActiveXObject)
			try {req = new ActiveXObject("Msxml2.XMLHTTP");}
			catch(e)
			{
				try{
					req = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					req = false;
				}
		}
		if(req)
		{
			req.onreadystatechange = function ()
			{
			if (req.readyState == 4 && req.status == 200)
				try
				{	//alert(req.responseText);
					eval(req.responseText);
					new_query = get_js_query;
				}
				catch(e)
				{
					new_query = false;
				}
			}
			req.open("post", url, false);//+'&xmlhttp=1'
			req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
			req.setRequestHeader('pragma','nocache');
			var extra_params='';//gelen parametrelerin sınırsız olabilmesi için
			var prm_count=0;
			for(var prms_i=3; prms_i < workdata.arguments.length;prms_i++)
			{
				if(workdata.arguments[prms_i]!=undefined)
				{
					prm_count++;
					if(prm_count==1)
						param_name='extra';
					else
						param_name='extra'+prm_count;
					extra_params=extra_params+'&'+param_name+'='+encodeURI(workdata.arguments[prms_i]);
				}
			}
			req.send('qry='+qry+'&prmt='+encodeURI(prmt)+'&maxrows='+maxrows+extra_params);
		}
	}
	callpage('index.cfm?fuseaction=objects2.emptypopup_get_workdata');//index.cfm?fuseaction=objects2.emptypopup_get_js_query2   http://ep.workcube/objects/query/get_js_query2.cfm
	return new_query;
}

function js_date(tarih,saat){
/*20060316 TolgaS
cf_date gibi çalışıyor aynı şekilde 2. arguman yollanırsa createodbcdate gibi saatide ekler ancak 19:42 şeklinde gelmeli saat*/
	if(tarih.indexOf('ts'))
	{
		tarih=tarih.replace(/\./g,'/');
		tarih=tarih.replace(/-/g,'/');
		tarih=tarih.replace(/\\/g,'/');
		if(list_len(tarih,'/')==3)
		{
			var js_gun=list_getat(tarih,1,'/');
			var js_ay=list_getat(tarih,2,'/');
			var js_yil=list_getat(tarih,3,'/');
			if(js_gun.length==0) js_gun = "01";
			else if (js_gun.length==1) js_gun = "0"+js_gun;
			if(js_ay.length==0) js_ay = "01";
			else if(js_ay.length==1) js_ay = "0"+js_ay;
			if(js_yil.length!=4 || js_yil<1900)
			{
				var todayDate=new Date();
				var js_yil=todayDate.getYear();
			}
			if(CheckEurodate(js_gun+"/"+js_ay+"/"+js_yil,'Tarih Kullanımı'))
			{
				if(saat == undefined)
					tarih="{ts '"+js_yil+"-"+js_ay+"-"+js_gun+" 00:00:00'}";
				else
					tarih="{ts '"+js_yil+"-"+js_ay+"-"+js_gun+" "+saat+":00'}";
				return tarih;
			}else return '';
		}
	}
	return tarih;
}

function date_format(gelen_tarih)
{
/*20070705 YunusOzay
dateformat gibi çalışıyor aynı şekilde tek arguman alıyor*/
	date_alan = '' + gelen_tarih; 

	js_yil = date_alan.substr(0,4);
	js_ay = date_alan.substr(5,2);
	js_gun = date_alan.substr(8,2);
	
	tarih = js_gun + "/" + js_ay + "/" + js_yil;
	return tarih;
}

function date_diff(tarih1,tarih2,fark,msg)
{
	/* 
	tarih1 ===> document.assetp_reserve.startdate gibi bir form alanı olmalı
	tarih2 ===> document.assetp_reserve.finishdate gibi bir form alanı olmalı
	fark ===> sayısal bir deger verilir. yil araligini belirler (ornegin : tarih1 ve tarih2 araligi en fazla 2 yil olmali gibi)
	msg hata durumunda alert edilecek mesaj
	Senay Gargaci 20060815
	*/
	fix_date(tarih1,tarih1.name);
	fix_date(tarih2,tarih2.name);
	tarih1_ = tarih1.value.substr(6,4);
	tarih2_ = tarih2.value.substr(6,4);
	deger_ = tarih2_ - tarih1_;
	if (deger_ > fark) 
		{
		if (msg != '')
			{
			alert(msg);
			tarih1.focus();
			}
		else
			{
			alert('Hata Mesajı Ayarlanmamış !');
			tarih1.focus();
			}
		return false;
		}
	else
		return true;
}

function colorPicker_callBack(strColor) 
{
	//document.bgColor = strColor;
	eval("document." + my_form_ + "." + my_son_isim).value = strColor;
}
function openColorPickerAdv(gelen,my_form) 
{
	document.getElementById('colorPickerAdvDiv').style.visibility = 'visible';
	my_son_isim = gelen;
	my_form_ = my_form;
}
function closeColorPickerAdv() 
{
	document.getElementById('colorPickerAdvDiv').style.visibility = 'hidden';
}
function isNumber(nesne) 
{
	/* 
	Input alaninin onblur ve onkeyup fonsksiyonlarında kullanilir. Kullanımında ise sadece sayı ifadeleri ile giris yapilabilir.
	onkeyup="isNumber(this);" onblur='isNumber(this);'
	Tolga Sutlu & Barbaros Kuz 20061124
	*/
	var inputStr=nesne.value;
	if(inputStr.length>0)
	{
		for(var i=0;i<inputStr.length;i++)
		{
			var oneChar = inputStr.substring(i,i+1);
			if (oneChar < "0" || oneChar > "9") 
			{
				nesne.value=inputStr.substring(0,i);
				return false;
			}
		}
	}
}

function wrk_date_image(gelen_alan,gelen_function)
{
	if(arguments[2]==null)
		{
		gelen_image_ = gelen_alan + "_image";
		gelen_ = eval(gelen_alan + "_td");
		gelen_.innerHTML = gelen_.innerHTML + '<img src="/images/calender.gif" align="absbottom" id="' + gelen_image_ +'" border="0" style="cursor:hand;">';
		
			if(arguments[1]==null)
				{
				Calendar.setup
					({
					inputField:gelen_alan,
					ifFormat:"%d/%m/%Y",
					button:gelen_image_,
					align:"Bl",
					singleClick:true
					});
				}
			else
				{			
					a=function this_get_function_1(cal,date)
						{
						 if (!cal.dateClicked) 
							 { 
							  return; //date was not clicked do nothing 
							 } 
						eval("document.all." + gelen_alan).value = date;
						eval("window."+gelen_function);
						cal.callCloseHandler();
						}
					
					Calendar.setup
						({
						inputField:gelen_alan,
						ifFormat:"%d/%m/%Y",
						button:gelen_image_,
						align:"Bl",
						onSelect:this_get_function_1,
						singleClick:true
						});
				}
		}
	else
		{
			gelen_image_ = String(gelen_alan + "_image");
			gelen_alan = String(gelen_alan);
			sira_ = arguments[2];
			Calendar.setup
					({
					inputField:gelen_alan,
					ifFormat:"%d/%m/%Y",
					button:gelen_image_,
					input_sira:sira_,
					align:"Bl",
					singleClick:true
					});
		}
}

function wrk_date_image_2(gelen_alan,gelen_satir,gelen_image_satir)
{
	gelen_satir_ = gelen_satir - 1;
	geldi_ = eval(gelen_alan + "_td");
	geldi_alan_ = eval("document.all." + gelen_alan + "[" + gelen_satir_ + "]");
	geldi_image_ = gelen_alan + "_image" + "_" + gelen_image_satir;
	if(gelen_satir_==0)
		{
		gelen_ = geldi_;
		}
	else
		{
		gelen_ = geldi_[gelen_satir_];
		}
	
	gelen_.innerHTML = gelen_.innerHTML + 'aaa: ' +  gelen_satir_ + '<img src="/images/calender.gif" align="absbottom" id="' + geldi_image_ +'" border="0" style="cursor:hand;">';
	
	a=function this_get_function_2(cal,date)
		{
		 if (!cal.dateClicked) 
			 { 
			  return; //date was not clicked do nothing 
			 } 
		geldi_alan_.value = 'bbbb';
		cal.callCloseHandler();
		}
	
	Calendar.setup
		({
		inputField:gelen_alan[1],
		ifFormat:"%d/%m/%Y",
		button:geldi_image_,
		align:"Bl",
		singleClick:true
		});
}

/*
function control_captcha(control_url,name)
{
	div_name_ = name+'_Hashdiv';
	text_name_ = eval("document.all."+name+"_HashText").value;
	reference_name_ = eval("document.all."+name+"_HashReference").value;
	AjaxPageLoad(control_url+'&name='+name+'&reference_name='+reference_name_+'&text_name='+text_name_,div_name_,1);
	alert('111');
	if(eval("document.all."+name+"_HashError").value=='1')
		{
		alert('Güvenlik Kodunu Hatalı Girdiniz!');
		return false;
		}
}
*/

function chk_process_cat(form_name,is_main)
{
	if(is_main==undefined || is_main==0)
		var deger = eval(form_name+'.process_cat');
	else
		var deger = eval(form_name+'.main_process_cat');
	if( deger[deger.selectedIndex].value.length == 0 )
	{
		alert("İşlem Tipi Seçiniz!");
		return false;
	}
	return true;
}
function wrk_form_set_js(form_name,form_object,form_object_value,form_object_type)
{//TS2008 fonksiyon sayesinde form adı(yollanmak zorunda değil),nesne,nesneye atılacak deger vede nesne tipi yollanırsa formadaki alanlara degerler doldurulur
	if(form_object_type!=undefined && list_len(form_object_type,',')) var type_control=1; else var type_control=0;
	object='document.getElementById(obj_name)';
	for(var frm_ind=1;frm_ind <= list_len(form_object,',');frm_ind++)
	{
		obj_name=list_getat(form_object,frm_ind,',');
		obj_value=list_getat(form_object_value,frm_ind,',');
		if(type_control && list_getat(form_object_type,frm_ind,',')!=undefined)
		    {
		      if(form_name!=undefined && form_name!='')
			     eval(form_name+'.'+obj_name).checked = true;
			  else
			     eval(object).checked= true;
		    }
		 else
		   {
		     if(form_name!=undefined && form_name!='')
			     eval(form_name+'.'+obj_name).value = obj_value;
		     else
		          eval(object).value=obj_value;
		    }
	}  
 } 
function wrk_call_function_js(call_function_name,call_function_parameters)
{//TS2008 istenilen fonksiyon ismi parametreleri yollanır parametrele bir array şeklinde sırası ile degerler gelir ve fonksiyon çalıştırılır
	var call_function = call_function_name+"(";
	for(i = 0; i < call_function_parameters.length-1; i++) 
		call_function += "'"+call_function_parameters[i]+"',";
	call_function += "'"+call_function_parameters[i]+"');";
	return eval(call_function);
}
function js_mid(str,start,len)
{
	//20080425 AE cf deki Mid in javascript hali. Kullanımı : js_mid(tam_kisim,2,1);
	if (start < 0 || len < 0) return "";
	var mid_str = str.substr(parseFloat(start)-1,len);
	return mid_str;
}
//WorkcubeObjeleri M.ER 01102008


function paper_control(obj_name,paper_type,purchase_sales,upd_id,paper_number,company_id,consumer_id,employee_id,dsn_type)
{//TolgaS 20080515 belge no kontrol paper_type dan sonrasi gelmez ise default degerleri alır **paper_number gelir ise yeni numara üretilmez yollanan deger yazılır
	var get_paper_control = workdata('get_paper_control',eval(obj_name).value,'',paper_type,purchase_sales,upd_id,company_id,consumer_id,employee_id,dsn_type);
	if(get_paper_control.recordcount)
	{
		if(purchase_sales==true || purchase_sales == undefined) var msg_auto_change='Değer Otomatik Değişecektir '; else var msg_auto_change ='';
		alert('Bu Belge Numarası Kullanılmıştır. '+msg_auto_change+'!');
		if((purchase_sales == true || purchase_sales == undefined) && (upd_id == 0 || upd_id==undefined))//eklerken satıslarda düzenlenecek
		{
			var get_paper = workdata('get_paper',paper_type);
			if(get_paper.recordcount)
				eval(obj_name).value = String(eval('get_paper.'+paper_type+'_NO')) +'-'+ String(parseFloat(eval('get_paper.'+paper_type+'_NUMBER'))+1);
			else
				eval(obj_name).value = '';
			return false;
		}else{
			eval(obj_name).value = paper_number;
			return false;
		}
	}
	else
		return true;
}

function LoadCity(id_residence,field_select_city,field_select_county,field_zone_control,field_select_district)
{
	var city_len = eval('document.getElementById("' + field_select_city + '")').options.length; 
	for(j=city_len;j>=0;j--)
		eval('document.getElementById("' + field_select_city + '")').options[j] = null;
	
	var county_len = eval('document.getElementById("' + field_select_county + '")').options.length;
	for(j=county_len;j>=0;j--)
		eval('document.getElementById("' + field_select_county + '")').options[j] = null;
	
	if(field_select_district != undefined)
	{
		var district_len = eval('document.getElementById("' + field_select_district + '")').options.length;
		for(j=district_len;j>=0;j--)
			eval('document.getElementById("' + field_select_district + '")').options[j] = null;	
	}
	
	//Ulke secili degilse
	if(id_residence != '')
	{
		if(field_zone_control != undefined && field_zone_control != 0)
			var deger=workdata('get_residence',1,id_residence,field_zone_control);
		else
			var deger=workdata('get_residence',1,id_residence);
		eval('document.getElementById("' + field_select_city + '")').options[0] = new Option('Seçiniz','');
		eval('document.getElementById("' + field_select_county + '")').options[0] = new Option('Seçiniz','');
		if(field_select_district != undefined)
			eval('document.getElementById("' + field_select_district + '")').options[0] = new Option('Seçiniz','');
		if(deger.recordcount)
		{
			for(var jj=0;jj<deger.recordcount;jj++)
				eval('document.getElementById("' + field_select_city + '")').options[jj+1]=new Option(deger.CITY_NAME[jj],deger.CITY_ID[jj]);
		}
	}
	else
	{
		eval('document.getElementById("' + field_select_city + '")').options[0] = new Option('Seçiniz','');
		eval('document.getElementById("' + field_select_county + '")').options[0] = new Option('Seçiniz','');
		if(field_select_district != undefined)
			eval('document.getElementById("' + field_select_district + '")').options[0] = new Option('Seçiniz','');
	}
}

function LoadCounty(id_residence,field_select_county,field_telcode,is_name,field_select_district)
{
	var county_len = eval("document.all." + field_select_county + ".options.length");
	for(j=county_len;j>=0;j--)
		eval("document.all." + field_select_county).options[j] = null;
	if(field_select_district != undefined)
	{
		var district_len = eval("document.all." + field_select_district + ".options.length");
		for(j=district_len;j>=0;j--)
			eval("document.all." + field_select_district).options[j] = null;	
	}
	//Il secili degilse
	if(id_residence != '')
	{
		var deger=workdata('get_residence',2,id_residence);
		eval("document.all." + field_select_county).options[0]=new Option('Seçiniz','');
		if(field_select_district != undefined)
			eval("document.all." + field_select_district).options[0] = new Option('Seçiniz','');
		for(var jj=0;jj<deger.recordcount;jj++)
		{
			if(is_name != undefined && is_name==1)
				eval("document.all." + field_select_county).options[jj+1]=new Option(deger.COUNTY_NAME[jj],deger.COUNTY_NAME[jj]);
			else
				eval("document.all." + field_select_county).options[jj+1]=new Option(deger.COUNTY_NAME[jj],deger.COUNTY_ID[jj]);
		}
		if(field_telcode != undefined && field_telcode != '' && deger.recordcount > 0)
		{
			eval("document.all." + field_telcode).value = '';
			eval("document.all." + field_telcode).value = deger.PHONE_CODE[0];
		}
	}
	else
	{
		eval("document.all." + field_select_county).options[0]=new Option('Seçiniz','');
		eval("document.all." + field_telcode).value = '';
		if(field_select_district != undefined)
			eval("document.all." + field_select_district).options[0] = new Option('Seçiniz','');
	}
}

function LoadDistrict(id_residence,field_select_district)
{
	var district_len = eval("document.all." + field_select_district + ".options.length");
	for(j=district_len;j>=0;j--)
		eval("document.all." + field_select_district).options[j] = null;
	//Ilçe secili degilse
	if(id_residence != '')
	{
		var deger=workdata('get_residence',3,id_residence);
		eval("document.all." + field_select_district).options[0]=new Option('Seçiniz','');
		for(var jj=0;jj<deger.recordcount;jj++)
		{
			eval("document.all." + field_select_district).options[jj+1]=new Option(deger.DISTRICT_NAME[jj],deger.DISTRICT_ID[jj]);
		}
	}
	else
	{
		eval("document.all." + field_select_district).options[0]=new Option('Seçiniz','');
	}
}

function WrkAccountControl(control_value,mesaj)
{
	var deger = workdata('get_account_code',control_value,1,0,1);
	if(deger.recordcount == 0)
	{
		alert(mesaj);
		return deger.recordcount;
	}
}
function ismaxlength(obj){
var mlength=obj.getAttribute? parseInt(obj.getAttribute("maxlength")) : "";
if (obj.getAttribute && obj.value.length>mlength)
	{
	if(obj.getAttribute("message"))
		{
		obj.value=obj.value.substring(0,mlength);
		alert(obj.getAttribute("message"));
		}
	else
		{
		obj.value=obj.value.substring(0,mlength);
		}
	}
}

function isDefined(variable)
{
return (!(!(eval("document.all."+variable))));
}

function findObj(theObj, theDoc)
/*herhangi bir document icinde eleman arar 20041104*/
{
	var p, i, foundObj;
	if(!theDoc) theDoc = document;
	if( (p = theObj.indexOf("?")) > 0 && parent.frames.length)
	{
		theDoc = parent.frames[theObj.substring(p+1)].document;
		theObj = theObj.substring(0,p);
	}
	if(!(foundObj = theDoc[theObj]) && theDoc.all) foundObj = theDoc.all[theObj];
	for (i=0; !foundObj && i < theDoc.forms.length; i++) 
		foundObj = theDoc.forms[i][theObj];
	for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++) 
		foundObj = findObj(theObj,theDoc.layers[i].document);
	if(!foundObj && document.getElementById) foundObj = document.getElementById(theObj);
	return foundObj;
}

function unhideSelect(gelen_menu_id)
{
	gelen_menu_id_ = eval(gelen_menu_id);
	if(gelen_menu_id.style.display=='none')
	{
		setTimeout("unhideselectaction(gelen_menu_id_)",100)
	}
}

function unhideselectaction(gelen_menu_id)
{
if (gelen_menu_id.style.display=='none')
{
	for (formIdx=0; formIdx<document.forms.length; formIdx++) 
	{
	var theForm = document.forms[formIdx];
		for(elementIdx=0; elementIdx<theForm.elements.length; elementIdx++) 
		{
		if(theForm[elementIdx].type=='select-one') 
			{
			theForm[elementIdx].style.visibility = 'visible';
			}
		}
	}
	window.status = '';
}
}

function hideSelect(gelen_menu_id)
{
		for (formIdx=0; formIdx<document.forms.length; formIdx++)
		{
			var theForm = document.forms[formIdx];
			for(elementIdx=0; elementIdx<theForm.elements.length; elementIdx++)
			{
				window.status += theForm[elementIdx].type;
				if(theForm[elementIdx].type == 'select-one') 
				{
					theForm[elementIdx].style.visibility = 'hidden';
				}
			}
		}
	window.status = '';
}

function TusOku(event)
{	
	if(typeof(event)=='string'){
		if(event != -1){
			if (list_getat(event,3,'|@|') == "1" )
				window.open('?fuseaction='+list_getat(event,1,'|@|')+'','mywin','left=20,top=20,copyhistory=1,scrollbars=1,menubar=1,directories=1,status=1,location=1,toolbar=1,resizable=1');
			else				
				window.location='?fuseaction='+list_getat(event,1,'|@|')+'';
		}
	}
	else if(window.event.ctrlKey==true && window.event.shiftKey==true)
	{
		var List_Favorites = document.getElementById('URL');
		var Favorites_i;
		if (List_Favorites!=null)
		{
			for (Favorites_i = List_Favorites.length - 1; Favorites_i>=1; Favorites_i--) 
			{
				if (list_getat(List_Favorites[Favorites_i].value,2,'|@|') == String.fromCharCode(window.event.keyCode))
				{
					if (list_getat(List_Favorites[Favorites_i].value,3,'|@|')=="1")	
						FavoritesmyRef = window.open('?fuseaction='+list_getat(document.getElementById(Favorites_i).value,1,'|@|')+'','','left=20,top=20,copyhistory=1,scrollbars=1,menubar=1,directories=1,status=1,location=1,toolbar=1,resizable=1');
					else				
					window.location='?fuseaction='+list_getat(document.getElementById(Favorites_i).value,1,'|@|')+'';
				}
			}
		}
	}
} 

/*
	[fav_location_page]
    TusOku fonksiyonundan gelen url string değerine göre name ve value'leri doldurarak form içinde gidilmek istenen kısayola gider,
    bunu yapmamın sebebi,önceden url'den gittiği için kaydedilmiş bir sayfaya erişildiğinde mesela tarihi değiştirse bile yada bir checkbox'u kaldırsa bile
    değerler bir sonraki listelemede hem url'den hemde formdan gittiği için,url değerleride sık kullanılanlarda ilk kaydedilmiş hali ile kaldığı için
    kullanıcının çalışan sayfa üzerinde bir değişiklik yapmasına olanak vermiyordu,bu sebeble form üzerinden gönderilerek bu sorun ortadan kaldırıldı..
    Form EP deki  SıkKullanılanlar checbox ının bulunduğu sayfada yer alıyor....(objects\display\favourites.cfm)
    M.ER 23 12 20008
*/
function fav_location_page(event){
    document.getElementById('fav_form_elements').innerHTML='';
    for(fo=2;fo<=list_len(event,'&');fo++){
        var objNameAndVal = list_getat(list_getat(event,fo,'&'),1,'|@|');
        var oge = document.createElement('<input type="hidden" name="'+list_getat(objNameAndVal,1,'=')+'" value="'+list_getat(objNameAndVal,2,'=')+'">');    
        document.getElementById('fav_form_elements').appendChild(oge);
     }
     //window.location.hostname ==>  Js ile hostname'i almak için kullanılıyor...
     if (list_getat(event,3,'|@|') == "1" ) 
          window.document.fav_form_.target='_blank';
      window.document.fav_form_.action = 'index.cfm?fuseaction='+list_getat(list_getat(event,1,'&'),1,'|@|')+'';
      window.document.fav_form_.submit();     
}
/*
    [form_warning]
    Boş olmaması gereken Satırların konrolünü kolaştırır..Fonksiyona objenin id'si ve uyarı mesajı gönderilir,
    fonksiyon alanın boş olup olmadığını kontrol return yada false döner,false döner ise nesneye focuslanarak 
    nesnenin arkaplan rengini değiştirir....
    Kullanım :
    if(!form_warning('q_control_no','Kalite Belge Numaralarını Tanımlayınız!'))return false;
    M.ER 01 08 20008
*/
function form_warning(field_id,warning_message,lenght){
	if(document.getElementById(field_id) != undefined)
	{
		if((lenght == undefined && document.getElementById(field_id).value=='') || (lenght != undefined && document.getElementById(field_id).value.length > 0 && document.getElementById(field_id).value.length != lenght)){
			alert(warning_message);
			document.getElementById(field_id).style.background='FF9900';
			document.getElementById(field_id).focus();
			return false;
		}
		else{
			document.getElementById(field_id).style.background='FFFFFF';	
			return true;
		}
	}
	else
		return true;
}
/*
[wrk_help]
    Herhangi Bir İnput Yada HTML tag'i(td,tr,table,div,span vs..) için kullanılabilir..
    Objenin onMouseOver fonksiyonu üzerinden kullanılır.
    Kullanım : onMouseOver="wrk_help(this.id,'açıklama...........');" gibi..
    Normalde 6 Par. alır ancak sadece ilk 2si zorunlu diğerleri girilmezse ekran pozisyonlarını
    kendisi ayarlar.
    M.ER 25 12 2008
*/
function wrk_help(id,content,height,width,left,top){ 
    obj =document.getElementById(id);
    if(!height)
        var height = obj.offsetHeight;
    if(!width)
        var width = obj.offsetWidth;
    if(!left)
        var left  = AutoComplete_GetLeft(obj);
    if(!top)	
        var top   = AutoComplete_GetTop(obj);
    var newObj =document.createElement('div');
    newObj.style.position   = 'absolute';
    newObj.style.backgroundColor = 'EEE';
    newObj.style.border   = '1px solid';
    newObj.style.textAlign   = 'center';
    newObj.style.left       = left + 'px';
    newObj.style.top        = obj.offsetHeight+1+top + 'px';
    newObj.style.width      = width + 'px';
    newObj.style.height      = height + 'px';
    newObj.style.zIndex     = '999999';
    newObj.setAttribute('id', 'wrk_help_'+id);
    newObj.setAttribute('name', 'wrk_help_'+id);
    newObj.style.zIndex = '999998';//auto completede kullanılırsa onun altında kalsın...
    newObj.innerHTML=content;
    window.document.body.appendChild(newObj);
    obj.onmouseover = function () {document.getElementById(newObj.id).style.display=''}
    obj.onmouseout = function () {document.getElementById(newObj.id).style.display='none'}
}
function allFilterNum(){
	for (var xi=0;xi<=arguments.length-1;xi++){
		if(document.getElementById(arguments[xi])){
			var degerim =document.getElementById(arguments[xi])
			degerim.value=filterNum(degerim.value,4);
		}
	}
}
onerror=WorkcubeErrorDetail;
var w_err_txt="";
function WorkcubeErrorDetail(msg,url,l){
    
    w_err_txt="Workcube Hata.\n\n";
    w_err_txt+="Hata: " + msg +"\n";
    w_err_txt+="Sayfa: " + url + "\n";
    w_err_txt+="Satır: " + l + "\n\n";
    w_err_txt+="Sistem Yöneticiniz İle Temesa Geçiniz!.\n\n";
    alert(w_err_txt); 
   return true;// window.location.reload();//reload da başka birşey yaptırabilirseniz çok iyi olur.Ben uğraştım ama olmadı..
}

function js_create_unique_id()
{
	var alphaStr = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var alphaMul = 62;
	var unique_date_ = new Date();
	
		var js_unique_id = '';
	
	js_unique_id += alphaStr.charAt(Math.random() * alphaMul);
	js_unique_id += alphaStr.charAt(Math.random() * alphaMul);
	js_unique_id += unique_date_.getDate();
	js_unique_id += unique_date_.getMonth()+1;
	js_unique_id += unique_date_.getFullYear();
	js_unique_id += unique_date_.getHours();
	js_unique_id += unique_date_.getMinutes();
	js_unique_id += unique_date_.getSeconds();
	js_unique_id += unique_date_.getMilliseconds();
	js_unique_id += alphaStr.charAt(Math.random() * alphaMul);
	js_unique_id += alphaStr.charAt(Math.random() * alphaMul);
	return js_unique_id;
}
function MyupdateClass()//fck editörün ajaxformsubmit ile kullanılması için gerekli olan function 
{
	this.updateEditorFormValue = function()
	{
			//Bu bölümde tüm FCKeditor alanlarının güncellenmesini sağlıyoruz.
			for (i = 0; i < parent.frames.length;i++)
				{
				if(parent.frames[i].FCK)
						{
						parent.frames[i].FCK.UpdateLinkedField();
						}
				}
	}
}
/*
	Right Click Menu
	Kullanılışı : Fonksiyon 2 parametre alıyor,ilki tipini belirtiyor,yani gönderilen değer neyi teşkil ediyor,PRODUCT_ID,STOCK_ID,COMPANY_ID,EMPLOYEE_ID vs.vs.Buna göre menü şekilleniyor.
    			  İkinci değer ise buda ilgili 1.ci değerde belirtilen alanın değeri yani 153,365,1,36,15 vs. gibi bir değer gelir.
                  Fonksiyona bu değerler gönderildikten sonra gelen tipe göre menü tasarlanır.Ve her sağ tıklamada gösterimi yapılır.Herhangi bir HTML tagine uygulanabilir.
                  Örnek Kullanım : wrk_right_menu('PRODUCT_ID',150);  150 nolu ürüne ait ürün menüsü oluşturulur ve sağ tıklandığında gösterilir.
                  Yazar : Elif Ölmez & Mahmut ER.
*/
var cord_x,cord_y;
function wrk_right_menu(type,menu_value){
	if(document.getElementById('right_menu_div'))
	{
		document.onclick = function(){document.getElementById("right_menu_div").style.visibility = "hidden";};//sol tuşa basıldığında divimiz kaybolsun..
		document.getElementById('right_menu_div').style.visibility= 'visible';
		cord_x = event.clientX + document.body.scrollLeft;
		cord_y = event.clientY + document.body.scrollTop;
		cord_x1 = event.cord_x;
		cord_y1 = event.cord_y;
			
		if (cord_x1 > (screen.width - 50)) cord_x = cord_x - 50;
		if (cord_y1 > (screen.height - 100)) cord_y = cord_y - 100;
		document.getElementById("right_menu_div").style.top=cord_y;
		document.getElementById("right_menu_div").style.left=cord_x+10;
		document.getElementById("right_menu_div").style.visibility = "visible";
		right_menu_str ='<table cellspacing="1" cellpadding="2" width="98%" border="0" align="center" bgcolor="FFFFFF">';
		if(type == 'PRODUCT_ID')
		{
            right_menu_str +='<tr><td id="td3" onClick="window.location.href=\'index.cfm?fuseaction=stock.detail_stock&pid='+menu_value+'\'"  onmouseover=\'this.style.backgroundColor = "#99B1E6";\' onMouseOut=\'this.style.backgroundColor = ""\' style="border-style: solid; border-width: 0px">&nbsp;&nbsp;&nbsp;<strong>Stok Detay</strong>&nbsp;&nbsp;&nbsp;</td></tr>';
            right_menu_str +='<tr><td id="td4" onClick="window.location.href=\'index.cfm?fuseaction=product.detail_product_price&pid='+menu_value+'\'"  onmouseover=\'this.style.backgroundColor = "#99B1E6";\' onMouseOut=\'this.style.backgroundColor = ""\' style="border-style: solid; border-width: 0px">&nbsp;&nbsp;&nbsp;<strong>Fiyat Detay</strong></td></tr>';
            right_menu_str +='<tr><td id="td8" onClick="window.location.href=\'index.cfm?fuseaction=product.detail_product_place&pid='+menu_value+'\'\,\'list\'"  onmouseover=\'this.style.backgroundColor = "#99B1E6";\' onMouseOut=\'this.style.backgroundColor = ""\' style="border-style: solid; border-width: 0px">&nbsp;&nbsp;&nbsp;<strong>Ürün Raf Detay</strong></td></tr>';
			right_menu_str +='<tr><td id="td8" onClick="windowopen(href=\'index.cfm?fuseaction=product.popup_product_guaranty&pid='+menu_value+'\'\,\'medium\')" onmouseover=\'this.style.backgroundColor = "#99B1E6";\' onMouseOut=\'this.style.backgroundColor = ""\' style="border-style: solid; border-width: 0px">&nbsp;&nbsp;&nbsp;<strong>Garanti</strong></td></tr>';
			right_menu_str +='<tr><td id="td8" onClick="window.location.href=\'index.cfm?fuseaction=product.form_add_product_cost&pid='+menu_value+'\'\"  onmouseover=\'this.style.backgroundColor = "#99B1E6";\' onMouseOut=\'this.style.backgroundColor = ""\' style="border-style: solid; border-width: 0px">&nbsp;&nbsp;&nbsp;<strong>Maliyet</strong></td></tr>';
          
              

		}	
		right_menu_str +='</table>';
		document.getElementById('right_menu_div').innerHTML=right_menu_str;
		return false;
	}	
	else
	{	
		var menu_div = document.createElement('div');
		menu_div.setAttribute('id', 'right_menu_div');
		menu_div.style.position = 'absolute';
		menu_div.style.visibility = 'hidden';
		menu_div.style.width = '130px';
		menu_div.style.borderStyle = 'outset';
		menu_div.style.borderWidth = '1px';
		menu_div.style.zIndex=9999;
        menu_div.style.border_color ='black';
		document.body.appendChild(menu_div);
		wrk_right_menu(type,menu_value);
	}
}
/* checkbox action fonksiyonu*/
function wrk_select_all(main_checkbox,row_checkbox)
	{
	var check_len = document.getElementsByName(row_checkbox).length;
	for(var cl_ind=0; cl_ind<check_len; cl_ind++)
		document.getElementsByName(row_checkbox)[cl_ind].checked = (document.getElementById(main_checkbox).checked)?true:false;
	}

function search_char_control(fld)
	{
	toplam_ = fld.value.length;
	deger_ = fld.value;
	yasaklilar_ = '<,>';
	if(toplam_>0)
		{
		for(var this_tus_=0; this_tus_<toplam_; this_tus_++)
			{
			tus_ = deger_.charAt(this_tus_);
			cont_ = list_find(yasaklilar_,tus_);
			if(cont_>0)
				{
				alert("Hatalı Arama Kriteri!");
				izin_ = '';
				fld.value = fld.value.replace(tus_,izin_);
				}
			}
		}
	}
function isIBAN(nesne,length) 
{
	/* 
    * Bir hesap numrasının gecerli IBAN formatında olup olmadını kontrol eder. 
    * "Registration Authority for ISO 13616" dökümanı doğrultusunda yazılmıştur. 
    * NOT: 
    * IBAN numarası en az 5 en fazla 34 karakter olabilir.
	* Türkiye icin IBAN numaraları 26 karakterdir 
	* Barbaros Kuz 20100615
	*/
	
	var iban=nesne.value;
	if (iban.length < 5 || iban.length >34) 
	{ 
		alert ('IBAN Numarası 5 Karakterden Küçük, 34 Karakterden Büyük Olamaz.'); 
		return false; 
	} 
	
	//Eger IBAN kodu TR ile basliyorsa uzunluk kontrolu olmalı
	if(iban.substr(0,2) == 'TR' && iban.length != 26)
	{ 
		alert ('TR ile Başlayan IBAN Numarası 26 Karakter Olmalıdır.'); 
		return false; 
	} 	
	
	var karakter1 = iban.charCodeAt(0);
	var karakter2 = iban.charCodeAt(1);
	var karakter3 = iban.charCodeAt(2);
	var karakter4 = iban.charCodeAt(3);
	
	// ilk iki karakter yalnızca buyuk harf olabilir
	if (!(65 <= karakter1 && karakter1 <= 90) || !(65 <= karakter2 && karakter2 <= 90)) 
	{
		alert('IBAN Numarasında 1. ve 2. Karakterler Büyük Harf Olmalıdır !');
		return false; 
	} 
	
	// 3 ve 4 karakter yalnizca rakam olabilir
	if (!(48 <= karakter3 && karakter3 <= 57) || !(48 <= karakter4 && karakter4 <= 57)) 
	{
		alert('IBAN Numarasında 3. ve 4. Karakterler Rakam Olmalıdır !'); 
		return false; 
	}
	
	new_iban = iban.substring(4) + iban.substring(0, 4); 
	for (i = 0, r = 0; i < new_iban.length; i++ ) 
	{ 
		karakter = new_iban.charCodeAt(i); 
		if (48 <= karakter && karakter <= 57) 
			k = karakter - 48; 
		else if (65 <= karakter && karakter <= 90) 
			k = karakter - 55; 
		else
		{ 
			alert('IBAN Numarası Sadece Rakam ve Büyük Harf Olmalıdır !'); 
			return false; 
		} 
		
		if (k > 9) 
			r = (100 * r + k) % 97; 
		else 
			r = (10 * r + k) % 97; 
	} 
	
	if (r != 1) 
	{ 
		alert('IBAN Numarası Geçersizdir.'); 
		return false; 
	}
	return true;
}

function isTCNUMBER(nesne)
{
	/* 
    * Girilen TC Kimlik Numarasinin gecerli TC Kimlik Numarasi olup olmadını kontrol eder. 
    * NOT: 
    * TC Kimlik Numarasi 11 karakter olmalidir.
	* Levent Saatci 20100620
	*/
	
	var sum_ten=0,odd_numbers=0,even_numbers=0;
	var tc_id_no = nesne.value;

	// TC Kimlik No 11 karakter olmalidir
	if(tc_id_no.length != 11) 
	{
		alert("TC Kimlik Numarasi 11 Karakter Olmalidir !");
		return false;
	}
	
	// ilk karakter sifir ile baslayamaz
	if(tc_id_no.substr(0,1) ==0)	
	{
		alert("TC Kimlik Numarasinin İlk Karakteri 0 Olamaz !");
		return false;
	}		
		
	// tek basamakların toplami 1,3,5,7,9
	even_numbers = parseInt(tc_id_no.substr(0,1)) + parseInt(tc_id_no.substr(2,1)) + parseInt(tc_id_no.substr(4,1)) + parseInt(tc_id_no.substr(6,1)) + parseInt(tc_id_no.substr(8,1));
	// cift basamakların toplami 2,4,6,8 (10 haric)
	odd_numbers = parseInt(tc_id_no.substr(1,1)) + parseInt(tc_id_no.substr(3,1)) + parseInt(tc_id_no.substr(5,1)) + parseInt(tc_id_no.substr(7,1)); 
	// ilk 10 basamak toplami
	sum_ten = even_numbers + odd_numbers + parseInt(tc_id_no.substr(9,1)); 
	
	// - 10. rakam,tek basamaklarin toplaminin 7 katı ile cift basamaklarin toplaminin mod 10 una esit olmalidir.
	// - 11 basamak ilk 10 basamagin toplamına esit olamalidir. 
	if((even_numbers*7-odd_numbers)%10 != tc_id_no.substr(9,1) || sum_ten%10 != tc_id_no.substr(10,1))	
	{
		alert("TC Kimlik Numarasini Yeniden Giriniz !");
		return false;
	} 

	return true;
} /*
workcube autocomplete 
oluşturma:TolgaS & HB 20080721
*/
wrk_AutoComplete = new Array();	
isIE = document.all ? true : false;
isGecko = navigator.userAgent.toLowerCase().indexOf('gecko') != -1;
isOpera = navigator.userAgent.toLowerCase().indexOf('opera') != -1;
// bu özelliğin çalışabilmesi için zIndex değeri 999999 olarak verilmiştir. yani ekranda en öne gelmesi sağlanmıştır. 
// diğer nesnelerin zIndex özelliği en fazla 999997 olmalıdır


/* İlgili text in onFocus olayında "AutoComplete_Create" fonksiyonunun bir kere çağırılması yeterlidir.


-------------------------------PARAMETRELER----------------------------------------
			( Tüm parametreler string olarak gönderilmelidir)

AutocompleteId			: Arama yapılacak textin id değerini belirtir.

findfield				: Database'den arama yapılacak alanların listesini belirtir. İlgili alanlar virgün ile ayrılarak gönderilmelidir.

visible_field			: Arama işlemi sırasında açılan listede görünecek alanları belirtir.  İlgili alanlar virgün ile ayrılarak gönderilmelidir.Ayırma işlemi ekranda ' || ' ayıracı ile yapılmaktadır.

query					: Aramanın yapılacağı workdata adını belirtir.

query_params_wrk		: Çalıştırılacak workdata fonskiyonuna yollancak parametreler sırası önemlidir ve yollanırken 
							parametreler 1.ci:5 ise '5'  şeklinde tek yollana bilir'1','',''
										 2.ci:7,8 ise '\'7,8\'' şeklinde tek olarak yollana bilir
										 2 paramtere birden yollancak ise '5,\'7,8\'' yada '\'5\',\'7,8\'' şeklinde birlikde yollana bilir

datafield				: Arama işlemi sonucunda database den hangi alanların getirileceği belirlenir. İlgili alanlar virgün ile ayrılarak gönderilmelidir.

formfield				: Arama işlemi sonucunda sorgudan gelen değerlerin formdaki hangi alanlara yazılacağını belirtir. İlgili alanlar virgün ile ayrılarak gönderilmelidir.

formname				: Arama işlemi sonucunda gelen değerlerin yazılacağı form ismini belirtir.

min_search_char 		: Arama işleminin kaç karakterden sonra başlayacağını belirtir. (default=3)

autocomplete_list_width	: Arama listesinin boyutunu belirtir. (default = arama yapılan text in genişliği)

call_function : cagrılacak fonksyion string olarak gönderilir.

search_type : 1 olarak gönderilirse like ile aramaya yapar.


-------------------------------ZORUNLU ALANLAR----------------------------------------
AutocompleteId , findfield , visible_field , query , datafield , formfield , formname


NOT	 : datafield ve formfield alanlarında verilen sıra önemlidir. Listedeki değerlerin birbirini karşılayacak sırada verilmesi gerekmektedir.
	   
	   Arama yapılan alana dönecek değer visible_field alanında belirtilen ilk değerdir.
	   
	   Birbirinden bağımsız tabloların birleştirildiği aramalarda yapılacak işlemler şu şekildedir.
	   	 - Daha önceden yeteri kadar tanımlanmış style yoksa, her farklı tablo için farklı renk tonlarında ayrı bir style tanımlanmak ( autocomplete_item0,autocomplete_item1,autocomplete_item2 gibi)
		 - SQL sorgusunda her tabloya AUTOCOMPLETE_TYPE alanı eklenerek (0,1,2 gibi) farklı değerler almasını sağlamak
	   Bu işlemlerden sonra her tablodan çekilen veriler farklı renkte görünecektir.

ÖRNEK ;
<input name="example" type="text" id="product" onFocus="AutoComplete_Create('product','PRODUCT_NAME,STOCK_CODE','PRODUCT_NAME,STOCK_CODE','get_product_autocomplete','workdata paramtreleri','PRODUCT_ID,STOCK_ID','product_id,stock_id','aa','2');" autocomplete="off"> 
<input name="company" type="text" id="company" onFocus="AutoComplete_Create('company','MEMBER_NAME,MEMBER_CODE','MEMBER_NAME,MEMBER_CODE','get_member_autocomplete','','COMPANY_ID,CONSUMER_ID','company_id,consumer_id','form','1');" autocomplete="off">
*/


function AutoComplete_Create(AutocompleteId,findfield_wrk,visible_field_wrk,query_wrk,query_params_wrk,datafield_wrk,formfield_wrk,formname_wrk,min_search_char_wrk,autocomplete_list_width_wrk,call_function_wrk,search_type_wrk)
{
	//alert(call_function_wrk);
	/*if(document.getElementById('company') != undefined)
		document.getElementById('company').value=query_params_wrk;
	else
		alert(query_params_wrk);*/

	if (wrk_AutoComplete[AutocompleteId]==undefined) //AutoComplete nesnesi daha önce oluşturulmamış ise 
	{
		var min_search_char;
		if (min_search_char_wrk==null)
			min_search_char='3';
		else
			min_search_char=min_search_char_wrk;

		//nesne yapısı oluşturuluyor
		wrk_AutoComplete[AutocompleteId] = {'isVisible':false,
											'element':document.getElementById(AutocompleteId),
											'dropdown':null,
											'highlighted':null,
											'findfield':findfield_wrk,
											'datafield':datafield_wrk,
											'query':query_wrk,
											'query_params':query_params_wrk,
											'formfield':formfield_wrk,
											'formname':formname_wrk,
											'min_search_char':min_search_char,
											'autocomplete_list_width':autocomplete_list_width_wrk,
											'data':'',
											'visible_field':visible_field_wrk,
											'call_function':call_function_wrk,
											'search_type':search_type_wrk
											};

		var keyup_komutu    = Autocomplete_Command_Find(AutocompleteId,'onkeyup');
		var keydown_komutu  = Autocomplete_Command_Find(AutocompleteId,'onkeydown');
		var keypress_komutu = Autocomplete_Command_Find(AutocompleteId,'onkeypress');
		var dblclick_komutu = Autocomplete_Command_Find(AutocompleteId,'ondblclick');
		var click_komutu    = Autocomplete_Command_Find(AutocompleteId,'onclick');
		var blur_komutu     = Autocomplete_Command_Find(AutocompleteId,'onblur');
		
		if(document.getElementById(AutocompleteId).setAttribute)
			{
			var input_alan = document.getElementById(AutocompleteId);
			input_alan.setAttribute("autocomplete","off");
			}
		else
			alert('olmaz');
			
		wrk_AutoComplete[AutocompleteId]['element'].onkeydown  = function(e) {
																				eval(keydown_komutu);
																				//if (!e) e = window.event;
																				return AutoComplete_KeyDown(this.getAttribute('id'), e);
																			 }
		wrk_AutoComplete[AutocompleteId]['element'].onkeyup    = function(e) {
																				eval(keyup_komutu);
																				return AutoComplete_KeyUp(this.getAttribute('id'), e);
																			 }
		/*wrk_AutoComplete[AutocompleteId]['element'].onkeypress = function(e) {
																				eval(keypress_komutu);
																				//if (!e) e = window.event;
																				//if (e.keyCode == 13 || isOpera)
																				//	return false;																			
																			 }*/
		wrk_AutoComplete[AutocompleteId]['element'].ondblclick = function()  {
																				eval(dblclick_komutu);
																				AutoComplete_ShowDropdown(this.getAttribute('id'));
																			 }
		wrk_AutoComplete[AutocompleteId]['element'].onclick    = function(e) {
																				eval(click_komutu);
																				if (!e) e = window.event;
																					e.cancelBubble = true;
																				e.returnValue = false;
																			 }
		wrk_AutoComplete[AutocompleteId]['element'].onblur     = function(e) {
																				if (wrk_AutoComplete[this.getAttribute('id')]['dropdown'].childNodes.length == 1 && wrk_AutoComplete[this.getAttribute('id')]['element'].value.toLowerCase() == list_getat(wrk_AutoComplete[this.getAttribute('id')]['dropdown'].childNodes[0].innerHTML,1,' || ').toLowerCase())
																				{
																					//var veriler='';
																					for (var sayaci=1 ; sayaci<= list_len(wrk_AutoComplete[this.getAttribute('id')]['datafield'],",") ; sayaci++ )
																					{
																						//veriler = veriler + eval("wrk_AutoComplete[this.getAttribute('id')]['data']."+list_getat(wrk_AutoComplete[this.getAttribute('id')]['datafield'],sayaci,',')+"[wrk_AutoComplete[this.getAttribute('id')]['dropdown'].childNodes[0].name]");
																						//if (sayaci!=list_len(wrk_AutoComplete[this.getAttribute('id')]['datafield'],",")) veriler=veriler + ",";
																						wrk_form_set_js(wrk_AutoComplete[this.getAttribute('id')]['formname'],list_getat(wrk_AutoComplete[this.getAttribute('id')]['formfield'],sayaci,','),eval("wrk_AutoComplete[this.getAttribute('id')]['data']."+list_getat(wrk_AutoComplete[this.getAttribute('id')]['datafield'],sayaci,',')+"[wrk_AutoComplete[this.getAttribute('id')]['dropdown'].childNodes[0].name]"),'');
																					}
																					eval(wrk_AutoComplete[this.getAttribute('id')]['call_function']);
																					//şuanda sadece text boxları dolduracak
																					//wrk_form_set_js(wrk_AutoComplete[this.getAttribute('id')]['formname'],wrk_AutoComplete[this.getAttribute('id')]['formfield'],veriler,'');
																				}
																				eval(blur_komutu);
																			 }
	
		var docClick = function()
		{
		   AutoComplete_HideDropdown(AutocompleteId);
		}

		if (document.addEventListener)
		{
			document.addEventListener('click', docClick, false);
		}
		else if (document.attachEvent)
		{
			document.attachEvent('onclick', docClick, false);
		}
		// Divde kaç eleman görünecek default 20 (bu if eğer parametrede gönderilirse açılacak yoksa 20 olarak kalacak)
		wrk_AutoComplete[AutocompleteId]['maxitems'] = 20;
		wrk_AutoComplete[AutocompleteId]['firstItemShowing'] = 0;
		wrk_AutoComplete[AutocompleteId]['lastItemShowing']  = 19;

		// En öne getir iframe olmaz ise ie6 da div selectlerin altında kalıyor
		if(isIE){
			wrk_AutoComplete[AutocompleteId]['iframe'] = document.createElement('iframe');
			wrk_AutoComplete[AutocompleteId]['iframe'].id = AutocompleteId +'_iframe';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.position = 'absolute';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.top = '0';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.left = '0';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.width = '0px';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.height = '0px';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.zIndex = '998';
			wrk_AutoComplete[AutocompleteId]['iframe'].style.visibility = 'hidden';
			wrk_AutoComplete[AutocompleteId]['element'].parentNode.insertBefore(wrk_AutoComplete[AutocompleteId]['iframe'],wrk_AutoComplete[AutocompleteId]['element']);
		}
		//alt acılan nesne oluşuyor
		AutoComplete_CreateDropdown(AutocompleteId);
	}
	else // AutoComplete nesnesi daha önce oluşturulmuş ise yeniden oluşturmadan varolanı gizle
	{
		AutoComplete_HideDropdown(AutocompleteId);
	}
}
//nesneye ait yeni tanımlanacak olaylarla birleştirilmek için nesneye önceden tanımlanmış olaylar bulunuyor
function Autocomplete_Command_Find(AutocompleteId,komut_olay)
{
	var wrk_AutoComplete_komutum;
	switch (komut_olay)
	{
		case "onkeyup":
						wrk_AutoComplete_komutum=document.getElementById(AutocompleteId).onkeyup;
						break;
		case "onkeydown":
						wrk_AutoComplete_komutum=document.getElementById(AutocompleteId).onkeydown;
						break;
		case "onkeypress":
						wrk_AutoComplete_komutum=document.getElementById(AutocompleteId).onkeypress;
						break;
		case "ondblclick":
						wrk_AutoComplete_komutum=document.getElementById(AutocompleteId).ondblclick;
						break;
		case "onclick":
						wrk_AutoComplete_komutum=document.getElementById(AutocompleteId).onclick;
						break;
		case "onblur":
						wrk_AutoComplete_komutum=document.getElementById(AutocompleteId).onblur;
						break;
	}
	
	if (wrk_AutoComplete_komutum==null)
		return null;
	else
	{
		wrk_AutoComplete_komutum=wrk_AutoComplete_komutum.toString();
		var wrk_AutoComplete_kar=wrk_AutoComplete_komutum.indexOf("{");
		wrk_AutoComplete_komutum=wrk_AutoComplete_komutum.substr(wrk_AutoComplete_kar+1,wrk_AutoComplete_komutum.length-2-wrk_AutoComplete_kar);
		return wrk_AutoComplete_komutum;
	}
}

// Açılan liste oluşturuluyor
function AutoComplete_CreateDropdown(AutocompleteId)
{
	var left  = AutoComplete_GetLeft(wrk_AutoComplete[AutocompleteId]['element']);
	var top   = AutoComplete_GetTop(wrk_AutoComplete[AutocompleteId]['element']) + wrk_AutoComplete[AutocompleteId]['element'].offsetHeight;
	var width ;

	if (wrk_AutoComplete[AutocompleteId]['autocomplete_list_width']!=null)
		width=wrk_AutoComplete[AutocompleteId]['autocomplete_list_width'];
	else
		width=wrk_AutoComplete[AutocompleteId]['element'].offsetWidth;

	wrk_AutoComplete[AutocompleteId]['dropdown'] = document.createElement('div');
	wrk_AutoComplete[AutocompleteId]['dropdown'].className = 'autocomplete';

	wrk_AutoComplete[AutocompleteId]['element'].parentNode.insertBefore(wrk_AutoComplete[AutocompleteId]['dropdown'], wrk_AutoComplete[AutocompleteId]['element']);

	// Konumunu ayarla
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.position   = 'absolute';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.left       = left + 'px';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.top        = top + 'px';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.width      = width + 'px';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.zIndex     = '999999';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.display     = 'none';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.visibility = 'hidden';
}

//aranacak kelimenin bulunduğu textin left değerini bul
function AutoComplete_GetLeft(element)
{
	var curNode = element;
	var left    = 0;
	do
	{
		if(curNode.tagName.toLowerCase() != 'div')//div ise kaymalara sebebe oluyor
			left += curNode.offsetLeft;
		curNode = curNode.offsetParent;
	}
	while(curNode.tagName.toLowerCase() != 'body');
	return left;
}

//aranacak kelimenin bulunduğu textin left değerini bul
function AutoComplete_GetTop(element)
{
	var curNode = element;
	var top    = 0;
	do
	{
		if(curNode.tagName.toLowerCase() != 'div')//div ise kaymalara sebebe oluyor
			top += curNode.offsetTop;
		curNode = curNode.offsetParent;
	}
	while(curNode.tagName.toLowerCase() != 'body');
	return top;
}

//Autocomplete listesini göster
function AutoComplete_ShowDropdown(AutocompleteId)
{
	//AutoComplete_HideAll();
	AutoComplete_HideDropdown(AutocompleteId);
	var value = wrk_AutoComplete[AutocompleteId]['element'].value;
	var toDisplay = new Array();
	var tosiraNo  = new Array();
	var newDiv    = null;
	var acmp_text = null;
	var acmp_yazi ='';
	var numItems  = wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes.length;
	var acmp_sorgu='';
	var acmp_sorgu_alanlar='';
	var acmp_sorgu_alan_durum=false;
	var acmp_sorgu_alan_bulunan_yer;

	// Tüm eski kayıtları temizle
	while (wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes.length > 0)
	{
		wrk_AutoComplete[AutocompleteId]['dropdown'].removeChild(wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[0]);
	}
	// dive elemanlar ekleniyor dönerek yapılıyor

	if (parseInt( wrk_AutoComplete[AutocompleteId]['element'].value.length ) >= parseInt(wrk_AutoComplete[AutocompleteId]['min_search_char']))
	{
		autocomp_count=0;
	/*workdata yerine kendi query oluşturuyordu
		if (value.length == parseInt(wrk_AutoComplete[AutocompleteId]['min_search_char']))
		{	//wrk_AutoComplete[AutocompleteId]['data'] = wrk_query("SELECT "+ wrk_AutoComplete[AutocompleteId]['datafield'] +" FROM "+ wrk_AutoComplete[AutocompleteId]['query'] + " WHERE "+ wrk_AutoComplete[AutocompleteId]['findfield'] + " LIKE '"+  value + "%'  ORDER BY " + wrk_AutoComplete[AutocompleteId]['findfield'],'dsn1');
			for (var acmp_sayac = 1; acmp_sayac <= list_len(wrk_AutoComplete[AutocompleteId]['findfield'],",") ; acmp_sayac++)
				if (acmp_sayac==list_len(wrk_AutoComplete[AutocompleteId]['findfield'],","))
					acmp_sorgu_alanlar = acmp_sorgu_alanlar + "ISNULL(" + list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') + ",'') AS " + list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') +" "; 
				else
					acmp_sorgu_alanlar = acmp_sorgu_alanlar + "ISNULL(" + list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') + ",'') AS " + list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') +", "; 
			for(var acmp_alan_sayac=1; acmp_alan_sayac <= list_len(wrk_AutoComplete[AutocompleteId]['datafield'],",");acmp_alan_sayac++)
			{
				acmp_sorgu_alan_durum=false;
				for (var acmp_sayac = 1; acmp_sayac <= list_len(wrk_AutoComplete[AutocompleteId]['findfield'],",") ; acmp_sayac++)
					if ( list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') == list_getat(wrk_AutoComplete[AutocompleteId]['datafield'],acmp_alan_sayac,','))
						acmp_sorgu_alan_durum=true;
				if (acmp_sorgu_alan_durum==false)
					acmp_sorgu_alanlar = acmp_sorgu_alanlar +", " + list_getat(wrk_AutoComplete[AutocompleteId]['datafield'],acmp_alan_sayac,',') + " ";
			}
			acmp_sorgu = "SELECT " + acmp_sorgu_alanlar + " FROM " +wrk_AutoComplete[AutocompleteId]['query']+ " WHERE ";
			for (acmp_sayac = 1; acmp_sayac <= list_len(wrk_AutoComplete[AutocompleteId]['findfield'],",") ; acmp_sayac++)
				if (acmp_sayac == list_len(wrk_AutoComplete[AutocompleteId]['findfield'],","))
					acmp_sorgu = acmp_sorgu + list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') + " LIKE '" + value + "%' ORDER BY " +list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],1,',');
				else
					acmp_sorgu = acmp_sorgu + list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',') + " LIKE '" + value + "%' OR ";
			wrk_AutoComplete[AutocompleteId]['data'] = wrk_query(acmp_sorgu,'dsn1');
		}*/
		if (value.length == parseInt(wrk_AutoComplete[AutocompleteId]['min_search_char']) || (wrk_AutoComplete[AutocompleteId]['data']=='' && value.length >= parseInt(wrk_AutoComplete[AutocompleteId]['min_search_char'])))
		{
			//alert(wrk_AutoComplete[AutocompleteId]['query_params']);
			//if(wrk_AutoComplete[AutocompleteId]['query_params']!='')
				wrk_AutoComplete[AutocompleteId]['data']=workdata(wrk_AutoComplete[AutocompleteId]['query'],value,'',wrk_AutoComplete[AutocompleteId]['query_params']);
			//else
				//wrk_AutoComplete[AutocompleteId]['data']=workdata(wrk_AutoComplete[AutocompleteId]['query'],value,'');
		}
		for (var acmp_sayac = 1; acmp_sayac <= list_len(wrk_AutoComplete[AutocompleteId]['findfield'],",") ; acmp_sayac++)
		{
		
			acmp_arama_alani=list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],acmp_sayac,',');
			for (i=0; i<wrk_AutoComplete[AutocompleteId]['data'].recordcount; ++i)
			{
				if( eval("wrk_AutoComplete[AutocompleteId]['data']."+ acmp_arama_alani + "[i]")!=''  && ( (wrk_AutoComplete[AutocompleteId]['search_type']==1 && eval("wrk_AutoComplete[AutocompleteId]['data']."+ acmp_arama_alani + "[i]").toLowerCase().indexOf(value.toLowerCase())>0 ) || (eval("wrk_AutoComplete[AutocompleteId]['data']."+ acmp_arama_alani + "[i].substr(0, value.length).toLowerCase()") == value.toLowerCase() ) ) )  //
				{
					newDiv = document.createElement('div');		
					if (typeof(wrk_AutoComplete[AutocompleteId]['data'].AUTOCOMPLETE_TYPE)=='object')
						newDiv.className = 'autocomplete_item'+wrk_AutoComplete[AutocompleteId]['data'].AUTOCOMPLETE_TYPE[i];
					else
						newDiv.className = 'autocomplete_item0';
						
					newDiv.dataFld = newDiv.className
					newDiv.setAttribute('id', 'autocomplete_item_' +i);
					newDiv.setAttribute('index', autocomp_count);
					newDiv.setAttribute('name',i);
					newDiv.setAttribute('align','left');
					newDiv.style.zIndex = '999999';
						
					 // scrollbar görünüyor mu?
					if (autocomp_count > wrk_AutoComplete[AutocompleteId]['maxitems'] && navigator.userAgent.indexOf('MSIE') == -1)
						newDiv.style.width = wrk_AutoComplete[AutocompleteId]['element'].offsetWidth - 22 + 'px';
					
					newDiv.onmouseover = function() {AutoComplete_HighlightItem(wrk_AutoComplete[AutocompleteId]['element'].getAttribute('id'), this.getAttribute('index'));};
					newDiv.onclick     = function() {AutoComplete_SetValue(wrk_AutoComplete[AutocompleteId]['element'].getAttribute('id')); AutoComplete_HideDropdown(wrk_AutoComplete[AutocompleteId]['element'].getAttribute('id'));}
		
					//ekranda görünecek yazılar açılır listeye ekleniyor(tüm alanlar için)
					acmp_yazi='';
					for (acmp_sayac = 1; acmp_sayac <= list_len(wrk_AutoComplete[AutocompleteId]['visible_field'],",") ; acmp_sayac++)				
							if (acmp_sayac == list_len(wrk_AutoComplete[AutocompleteId]['visible_field'],","))
								acmp_yazi = acmp_yazi + eval("wrk_AutoComplete[AutocompleteId]['data']."+ list_getat(wrk_AutoComplete[AutocompleteId]['visible_field'],acmp_sayac,',') + "[i]");
							else
								acmp_yazi = acmp_yazi + eval("wrk_AutoComplete[AutocompleteId]['data']."+ list_getat(wrk_AutoComplete[AutocompleteId]['visible_field'],acmp_sayac,',') + "[i]") + " || ";
						
					//acmp_text   = document.createTextNode(eval("wrk_AutoComplete[AutocompleteId]['data']."+ list_getat(wrk_AutoComplete[AutocompleteId]['findfield'],1,',') + "[i]"));
					acmp_text=document.createTextNode(acmp_yazi);			
					newDiv.appendChild(acmp_text);
					wrk_AutoComplete[AutocompleteId]['dropdown'].appendChild(newDiv);
					autocomp_count++;
					if (autocomp_count==20) break;
				}
			}
		}
		// Eşleşen kayıt yoksa divi gizle ve çık
		if (autocomp_count == 0)
		{
			AutoComplete_HideDropdown(AutocompleteId);
			return;
		}

		//çok fazla eleman varsa ( şimdilik countun 20 den büyük olma ihtimali yok eğer parametre ile alınırsa burası düzenlenmeli
		if (autocomp_count > wrk_AutoComplete[AutocompleteId]['maxitems'])
		{
			wrk_AutoComplete[AutocompleteId]['dropdown'].style.height = (wrk_AutoComplete[AutocompleteId]['maxitems'] * 15) + 2 + 'px';				
		}
		else
		{
			wrk_AutoComplete[AutocompleteId]['dropdown'].style.height ='';
		}
		//Autocomplete listesi konumunu ayarla
		wrk_AutoComplete[AutocompleteId]['dropdown'].style.left = AutoComplete_GetLeft(wrk_AutoComplete[AutocompleteId]['element']);
		wrk_AutoComplete[AutocompleteId]['dropdown'].style.top  = AutoComplete_GetTop(wrk_AutoComplete[AutocompleteId]['element']) + wrk_AutoComplete[AutocompleteId]['element'].offsetHeight;
		
		// Autocomplete listesini göster
		if (!wrk_AutoComplete[AutocompleteId]['isVisible'])
		{
			wrk_AutoComplete[AutocompleteId]['dropdown'].style.display = 'block';
			wrk_AutoComplete[AutocompleteId]['dropdown'].style.visibility = 'visible';
			wrk_AutoComplete[AutocompleteId]['isVisible'] = true;
		}
		
		// IE için alt katmanı göster
		if (isIE)
		{
			wrk_AutoComplete[AutocompleteId]['iframe'].style.top    = wrk_AutoComplete[AutocompleteId]['dropdown'].style.top;
			wrk_AutoComplete[AutocompleteId]['iframe'].style.left   = wrk_AutoComplete[AutocompleteId]['dropdown'].style.left;
			wrk_AutoComplete[AutocompleteId]['iframe'].style.width  = wrk_AutoComplete[AutocompleteId]['dropdown'].offsetWidth;
			wrk_AutoComplete[AutocompleteId]['iframe'].style.height = wrk_AutoComplete[AutocompleteId]['dropdown'].offsetHeight;
			wrk_AutoComplete[AutocompleteId]['iframe'].style.visibility = 'visible';
		}
	
		if (wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes.length != numItems)
		{
			wrk_AutoComplete[AutocompleteId]['highlighted'] = null;
		}
	}	
	else //karakter sayısı yeterli değilse
	{
		AutoComplete_HideDropdown(AutocompleteId);
	}
}

// Autocomplete listesini gizle
function AutoComplete_HideDropdown(AutocompleteId)
{
	if (wrk_AutoComplete[AutocompleteId]['iframe'])
	{
		wrk_AutoComplete[AutocompleteId]['iframe'].style.visibility = 'hidden';
	}
	
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.display = 'none';
	wrk_AutoComplete[AutocompleteId]['dropdown'].style.visibility = 'hidden';
	wrk_AutoComplete[AutocompleteId]['highlighted'] = null;
	wrk_AutoComplete[AutocompleteId]['isVisible']   = false;
}

//ilgili işleme göre elemanı seçili(highlight) yap
function AutoComplete_HighlightItem(AutocompleteId, index)
{
	if (wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[index])
	{
		for (var i=0; i<wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes.length; ++i)
		{
			if (wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[i].className == 'autocomplete_item_highlighted')
			{
				wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[i].className = wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[i].dataFld;
			}
		}

		wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[index].className = 'autocomplete_item_highlighted';
		wrk_AutoComplete[AutocompleteId]['highlighted'] = index;
	}
}

function AutoComplete_Highlight(AutocompleteId, index)
{
	if (index == 1 && wrk_AutoComplete[AutocompleteId]['highlighted'] == wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes.length - 1)
	{
		wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].className = wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].dataFld;
		wrk_AutoComplete[AutocompleteId]['highlighted'] = null;	
	}
	else if (index == -1 && wrk_AutoComplete[AutocompleteId]['highlighted'] == 0)
	{
		wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[0].className = wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[0].dataFld;
		wrk_AutoComplete[AutocompleteId]['highlighted'] = wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes.length;
	}

	// highlight durumunda eleman yoksa
	if (wrk_AutoComplete[AutocompleteId]['highlighted'] == null)
	{
		wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[0].className = 'autocomplete_item_highlighted';
		wrk_AutoComplete[AutocompleteId]['highlighted'] = 0;
	}
	else
	{
		if (wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']])
		{
			wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].className = wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].dataFld;
		}
		var newIndex = wrk_AutoComplete[AutocompleteId]['highlighted'] + index;
		if (wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[newIndex])
		{
			wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[newIndex].className = 'autocomplete_item_highlighted';
			wrk_AutoComplete[AutocompleteId]['highlighted'] = newIndex;
		}
	}
}
//işlem bitti değerleri yolla   
function AutoComplete_SetValue(AutocompleteId)
{
	//var veriler='';
	//wrk_AutoComplete[AutocompleteId]['element'].value = list_getat(wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].innerHTML,1,' || '
	wrk_AutoComplete[AutocompleteId]['element'].value = list_getat(wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].innerHTML,1,' || ');
	
	for (i=1 ; i<= list_len(wrk_AutoComplete[AutocompleteId]['datafield'],",") ; i++ )
	{
		//veriler = veriler +eval("wrk_AutoComplete[AutocompleteId]['data']."+list_getat(wrk_AutoComplete[AutocompleteId]['datafield'],i,',')+"[wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].name]");
		//if (i!=list_len(wrk_AutoComplete[AutocompleteId]['datafield'],",")) veriler=veriler + ",";
		value_deger_ = eval("wrk_AutoComplete[AutocompleteId]['data']."+list_getat(wrk_AutoComplete[AutocompleteId]['datafield'],i,',')+"[wrk_AutoComplete[AutocompleteId]['dropdown'].childNodes[wrk_AutoComplete[AutocompleteId]['highlighted']].name]");
		wrk_form_set_js(wrk_AutoComplete[AutocompleteId]['formname'],list_getat(wrk_AutoComplete[AutocompleteId]['formfield'],i,''),value_deger_,'');
	}
	eval(wrk_AutoComplete[AutocompleteId]['call_function']);
	//şuanda sadece text boxları dolduracak
	//wrk_form_set_js(wrk_AutoComplete[AutocompleteId]['formname'],wrk_AutoComplete[AutocompleteId]['formfield'],veriler,'');
}    
//scroll gereklimi?
function AutoComplete_ScrollCheck(AutocompleteId)
{
	if (wrk_AutoComplete[AutocompleteId]['highlighted'] > wrk_AutoComplete[AutocompleteId]['lastItemShowing'])
	{
		wrk_AutoComplete[AutocompleteId]['firstItemShowing'] = wrk_AutoComplete[AutocompleteId]['highlighted'] - (wrk_AutoComplete[AutocompleteId]['maxitems'] - 1);
		wrk_AutoComplete[AutocompleteId]['lastItemShowing']  = wrk_AutoComplete[AutocompleteId]['highlighted'];
	}
	if (wrk_AutoComplete[AutocompleteId]['highlighted'] < wrk_AutoComplete[AutocompleteId]['firstItemShowing'])
	{
		wrk_AutoComplete[AutocompleteId]['firstItemShowing'] = wrk_AutoComplete[AutocompleteId]['highlighted'];
		wrk_AutoComplete[AutocompleteId]['lastItemShowing']  = wrk_AutoComplete[AutocompleteId]['highlighted'] + (wrk_AutoComplete[AutocompleteId]['maxitems'] - 1);
	}
	wrk_AutoComplete[AutocompleteId]['dropdown'].scrollTop = wrk_AutoComplete[AutocompleteId]['firstItemShowing'] * 15;
}
//tuşa basıldıysa iligili işlemi yap
function AutoComplete_KeyDown(AutocompleteId)
{
	// Mozilla
	if (arguments[1] != null)
	{
		event = arguments[1];
	}
	var keyCode = event.keyCode;
	switch (keyCode)
	{
		// Enter
		case 13:
			if (wrk_AutoComplete[AutocompleteId]['highlighted'] != null)
			{
				AutoComplete_SetValue(AutocompleteId);
				AutoComplete_HideDropdown(AutocompleteId);
				event.returnValue = false;
				event.cancelBubble = true;
			}
			break;

		// Esc
		case 27:
			AutoComplete_HideDropdown(AutocompleteId);
			event.returnValue = false;
			event.cancelBubble = true;
			break;
		
		// yukarı ok 
		case 38:			
			if (!wrk_AutoComplete[AutocompleteId]['isVisible'])
			{
				AutoComplete_ShowDropdown(AutocompleteId);
			}
			
			if (parseInt( wrk_AutoComplete[AutocompleteId]['element'].value.length ) >= parseInt(wrk_AutoComplete[AutocompleteId]['min_search_char'])  && wrk_AutoComplete[AutocompleteId]['isVisible'])
			{
				AutoComplete_Highlight(AutocompleteId, -1);
				AutoComplete_ScrollCheck(AutocompleteId, -1);
			}
			return false;
			break;
		
		// Tab
		case 9:
			if (wrk_AutoComplete[AutocompleteId]['isVisible'])
			{
				AutoComplete_HideDropdown(AutocompleteId);
			}
			return;
		
		// aşağı ok
		case 40:
			if (!wrk_AutoComplete[AutocompleteId]['isVisible']) {
				AutoComplete_ShowDropdown(AutocompleteId);
			}
			if (parseInt( wrk_AutoComplete[AutocompleteId]['element'].value.length ) >= parseInt(wrk_AutoComplete[AutocompleteId]['min_search_char']) && wrk_AutoComplete[AutocompleteId]['isVisible'] )
			{
				AutoComplete_Highlight(AutocompleteId, 1);
				AutoComplete_ScrollCheck(AutocompleteId, 1);
			}
			return false;
			break;
	}
}

// tuşun bırakılması
function AutoComplete_KeyUp(AutocompleteId)
{
	// Mozilla
	if (arguments[1] != null)
	{
		event = arguments[1];
	}
	var keyCode = event.keyCode;
	//eğer text içeriği boşsa atama alanları boşaltılıyor
	//if ( parseInt( wrk_AutoComplete[AutocompleteId]['element'].value.length ) == 0 )
		//wrk_form_set_js(wrk_AutoComplete[AutocompleteId]['formname'],wrk_AutoComplete[AutocompleteId]['formfield'],'','');
		
	switch (keyCode)
	{
		case 13:						
			event.returnValue = false;
			event.cancelBubble = true;
			break;

		case 27:
			AutoComplete_HideDropdown(AutocompleteId);
			event.returnValue = false;
			event.cancelBubble = true;
			break;
		case 38:
		case 40:
			return false;
			break;

		default:
			AutoComplete_ShowDropdown(AutocompleteId);
			break;
	}
}

// Autocomplete listesini gizle
function AutoComplete_isVisible(AutocompleteId)
{
	return wrk_AutoComplete[AutocompleteId]['dropdown'].style.display == 'block';
} /*  Copyright Mihai Bazon, 2002-2005  |  www.bazon.net/mishoo
 * -----------------------------------------------------------
 *
 * The DHTML Calendar, version 1.0 "It is happening again"
 *
 * Details and latest version at:
 * www.dynarch.com/projects/calendar
 *
 * This script is developed by Dynarch.com.  Visit us at www.dynarch.com.
 *
 * This script is distributed under the GNU Lesser General Public License.
 * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html
 */

// $Id: calendar.js,v 1.53 2006/02/11 12:32:59 mishoo Exp $

/** The Calendar object constructor. */
Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) {
	// member variables
	this.activeDiv = null;
	this.currentDateEl = null;
	this.getDateStatus = null;
	this.getDateToolTip = null;
	this.getDateText = null;
	this.timeout = null;
	this.onSelected = onSelected || null;
	this.onClose = onClose || null;
	this.dragging = false;
	this.hidden = false;
	this.minYear = 1970;
	this.maxYear = 2050;
	this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"];
	this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"];
	this.isPopup = true;
	this.weekNumbers = true;
	this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc.
	this.showsOtherMonths = false;
	this.dateStr = dateStr;
	this.ar_days = null;
	this.showsTime = false;
	this.time24 = true;
	this.yearStep = 2;
	this.hiliteToday = true;
	this.multiple = null;
	// HTML elements
	this.table = null;
	this.element = null;
	this.tbody = null;
	this.firstdayname = null;
	// Combo boxes
	this.monthsCombo = null;
	this.yearsCombo = null;
	this.hilitedMonth = null;
	this.activeMonth = null;
	this.hilitedYear = null;
	this.activeYear = null;
	// Information
	this.dateClicked = false;

	// one-time initializations
	if (typeof Calendar._SDN == "undefined") {
		// table of short day names
		if (typeof Calendar._SDN_len == "undefined")
			Calendar._SDN_len = 3;
		var ar = new Array();
		for (var i = 8; i > 0;) {
			ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len);
		}
		Calendar._SDN = ar;
		// table of short month names
		if (typeof Calendar._SMN_len == "undefined")
			Calendar._SMN_len = 3;
		ar = new Array();
		for (var i = 12; i > 0;) {
			ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len);
		}
		Calendar._SMN = ar;
	}
};

// ** constants

/// "static", needed for event handlers.
Calendar._C = null;

/// detect a special case of "web browser"
Calendar.is_ie = ( /msie/i.test(navigator.userAgent) &&
		   !/opera/i.test(navigator.userAgent) );

Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) );

/// detect Opera browser
Calendar.is_opera = /opera/i.test(navigator.userAgent);

/// detect KHTML-based browsers
Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent);

// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate
//        library, at some point.

Calendar.getAbsolutePos = function(el) {
	var SL = 0, ST = 0;
	var is_div = /^div$/i.test(el.tagName);
	if (is_div && el.scrollLeft)
		SL = el.scrollLeft;
	if (is_div && el.scrollTop)
		ST = el.scrollTop;
	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };
	if (el.offsetParent) {
		var tmp = this.getAbsolutePos(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
	}
	return r;
};

Calendar.isRelated = function (el, evt) {
	var related = evt.relatedTarget;
	if (!related) {
		var type = evt.type;
		if (type == "mouseover") {
			related = evt.fromElement;
		} else if (type == "mouseout") {
			related = evt.toElement;
		}
	}
	while (related) {
		if (related == el) {
			return true;
		}
		related = related.parentNode;
	}
	return false;
};

Calendar.removeClass = function(el, className) {
	if (!(el && el.className)) {
		return;
	}
	var cls = el.className.split(" ");
	var ar = new Array();
	for (var i = cls.length; i > 0;) {
		if (cls[--i] != className) {
			ar[ar.length] = cls[i];
		}
	}
	el.className = ar.join(" ");
};

Calendar.addClass = function(el, className) {
	Calendar.removeClass(el, className);
	el.className += " " + className;
};

// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately.
Calendar.getElement = function(ev) {
	var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget;
	while (f.nodeType != 1 || /^div$/i.test(f.tagName))
		f = f.parentNode;
	return f;
};

Calendar.getTargetElement = function(ev) {
	var f = Calendar.is_ie ? window.event.srcElement : ev.target;
	while (f.nodeType != 1)
		f = f.parentNode;
	return f;
};

Calendar.stopEvent = function(ev) {
	ev || (ev = window.event);
	if (Calendar.is_ie) {
		ev.cancelBubble = true;
		ev.returnValue = false;
	} else {
		ev.preventDefault();
		ev.stopPropagation();
	}
	return false;
};

Calendar.addEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	} else {
		el["on" + evname] = func;
	}
};

Calendar.removeEvent = function(el, evname, func) {
	if (el.detachEvent) { // IE
		el.detachEvent("on" + evname, func);
	} else if (el.removeEventListener) { // Gecko / W3C
		el.removeEventListener(evname, func, true);
	} else {
		el["on" + evname] = null;
	}
};

Calendar.createElement = function(type, parent) {
	var el = null;
	if (document.createElementNS) {
		// use the XHTML namespace; IE won't normally get here unless
		// _they_ "fix" the DOM2 implementation.
		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
	} else {
		el = document.createElement(type);
	}
	if (typeof parent != "undefined") {
		parent.appendChild(el);
	}
	return el;
};

// END: UTILITY FUNCTIONS

// BEGIN: CALENDAR STATIC FUNCTIONS

/** Internal -- adds a set of events to make some element behave like a button. */
Calendar._add_evs = function(el) {
	with (Calendar) {
		addEvent(el, "mouseover", dayMouseOver);
		addEvent(el, "mousedown", dayMouseDown);
		addEvent(el, "mouseout", dayMouseOut);
		if (is_ie) {
			addEvent(el, "dblclick", dayMouseDblClick);
			el.setAttribute("unselectable", true);
		}
	}
};

Calendar.findMonth = function(el) {
	if (typeof el.month != "undefined") {
		return el;
	} else if (typeof el.parentNode.month != "undefined") {
		return el.parentNode;
	}
	return null;
};

Calendar.findYear = function(el) {
	if (typeof el.year != "undefined") {
		return el;
	} else if (typeof el.parentNode.year != "undefined") {
		return el.parentNode;
	}
	return null;
};

Calendar.showMonthsCombo = function () {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	var cal = cal;
	var cd = cal.activeDiv;
	var mc = cal.monthsCombo;
	if (cal.hilitedMonth) {
		Calendar.removeClass(cal.hilitedMonth, "hilite");
	}
	if (cal.activeMonth) {
		Calendar.removeClass(cal.activeMonth, "active");
	}
	var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()];
	Calendar.addClass(mon, "active");
	cal.activeMonth = mon;
	var s = mc.style;
	s.display = "block";
	if (cd.navtype < 0)
		s.left = cd.offsetLeft + "px";
	else {
		var mcw = mc.offsetWidth;
		if (typeof mcw == "undefined")
			// Konqueror brain-dead techniques
			mcw = 50;
		s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px";
	}
	s.top = (cd.offsetTop + cd.offsetHeight) + "px";
};

Calendar.showYearsCombo = function (fwd) {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	var cal = cal;
	var cd = cal.activeDiv;
	var yc = cal.yearsCombo;
	if (cal.hilitedYear) {
		Calendar.removeClass(cal.hilitedYear, "hilite");
	}
	if (cal.activeYear) {
		Calendar.removeClass(cal.activeYear, "active");
	}
	cal.activeYear = null;
	var Y = cal.date.getFullYear() + (fwd ? 1 : -1);
	var yr = yc.firstChild;
	var show = false;
	for (var i = 12; i > 0; --i) {
		if (Y >= cal.minYear && Y <= cal.maxYear) {
			yr.innerHTML = Y;
			yr.year = Y;
			yr.style.display = "block";
			show = true;
		} else {
			yr.style.display = "none";
		}
		yr = yr.nextSibling;
		Y += fwd ? cal.yearStep : -cal.yearStep;
	}
	if (show) {
		var s = yc.style;
		s.display = "block";
		if (cd.navtype < 0)
			s.left = cd.offsetLeft + "px";
		else {
			var ycw = yc.offsetWidth;
			if (typeof ycw == "undefined")
				// Konqueror brain-dead techniques
				ycw = 50;
			s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px";
		}
		s.top = (cd.offsetTop + cd.offsetHeight) + "px";
	}
};

// event handlers

Calendar.tableMouseUp = function(ev) {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	if (cal.timeout) {
		clearTimeout(cal.timeout);
	}
	var el = cal.activeDiv;
	if (!el) {
		return false;
	}
	var target = Calendar.getTargetElement(ev);
	ev || (ev = window.event);
	Calendar.removeClass(el, "active");
	if (target == el || target.parentNode == el) {
		Calendar.cellClick(el, ev);
	}
	var mon = Calendar.findMonth(target);
	var date = null;
	if (mon) {
		date = new Date(cal.date);
		if (mon.month != date.getMonth()) {
			date.setMonth(mon.month);
			cal.setDate(date);
			cal.dateClicked = false;
			cal.callHandler();
		}
	} else {
		var year = Calendar.findYear(target);
		if (year) {
			date = new Date(cal.date);
			if (year.year != date.getFullYear()) {
				date.setFullYear(year.year);
				cal.setDate(date);
				cal.dateClicked = false;
				cal.callHandler();
			}
		}
	}
	with (Calendar) {
		removeEvent(document, "mouseup", tableMouseUp);
		removeEvent(document, "mouseover", tableMouseOver);
		removeEvent(document, "mousemove", tableMouseOver);
		cal._hideCombos();
		_C = null;
		return stopEvent(ev);
	}
};

Calendar.tableMouseOver = function (ev) {
	var cal = Calendar._C;
	if (!cal) {
		return;
	}
	var el = cal.activeDiv;
	var target = Calendar.getTargetElement(ev);
	if (target == el || target.parentNode == el) {
		Calendar.addClass(el, "hilite active");
		Calendar.addClass(el.parentNode, "rowhilite");
	} else {
		if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2)))
			Calendar.removeClass(el, "active");
		Calendar.removeClass(el, "hilite");
		Calendar.removeClass(el.parentNode, "rowhilite");
	}
	ev || (ev = window.event);
	if (el.navtype == 50 && target != el) {
		var pos = Calendar.getAbsolutePos(el);
		var w = el.offsetWidth;
		var x = ev.clientX;
		var dx;
		var decrease = true;
		if (x > pos.x + w) {
			dx = x - pos.x - w;
			decrease = false;
		} else
			dx = pos.x - x;

		if (dx < 0) dx = 0;
		var range = el._range;
		var current = el._current;
		var count = Math.floor(dx / 10) % range.length;
		for (var i = range.length; --i >= 0;)
			if (range[i] == current)
				break;
		while (count-- > 0)
			if (decrease) {
				if (--i < 0)
					i = range.length - 1;
			} else if ( ++i >= range.length )
				i = 0;
		var newval = range[i];
		el.innerHTML = newval;

		cal.onUpdateTime();
	}
	var mon = Calendar.findMonth(target);
	if (mon) {
		if (mon.month != cal.date.getMonth()) {
			if (cal.hilitedMonth) {
				Calendar.removeClass(cal.hilitedMonth, "hilite");
			}
			Calendar.addClass(mon, "hilite");
			cal.hilitedMonth = mon;
		} else if (cal.hilitedMonth) {
			Calendar.removeClass(cal.hilitedMonth, "hilite");
		}
	} else {
		if (cal.hilitedMonth) {
			Calendar.removeClass(cal.hilitedMonth, "hilite");
		}
		var year = Calendar.findYear(target);
		if (year) {
			if (year.year != cal.date.getFullYear()) {
				if (cal.hilitedYear) {
					Calendar.removeClass(cal.hilitedYear, "hilite");
				}
				Calendar.addClass(year, "hilite");
				cal.hilitedYear = year;
			} else if (cal.hilitedYear) {
				Calendar.removeClass(cal.hilitedYear, "hilite");
			}
		} else if (cal.hilitedYear) {
			Calendar.removeClass(cal.hilitedYear, "hilite");
		}
	}
	return Calendar.stopEvent(ev);
};

Calendar.tableMouseDown = function (ev) {
	if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) {
		return Calendar.stopEvent(ev);
	}
};

Calendar.calDragIt = function (ev) {
	var cal = Calendar._C;
	if (!(cal && cal.dragging)) {
		return false;
	}
	var posX;
	var posY;
	if (Calendar.is_ie) {
		posY = window.event.clientY + document.body.scrollTop;
		posX = window.event.clientX + document.body.scrollLeft;
	} else {
		posX = ev.pageX;
		posY = ev.pageY;
	}
	cal.hideShowCovered();
	var st = cal.element.style;
	st.left = (posX - cal.xOffs) + "px";
	st.top = (posY - cal.yOffs) + "px";
	return Calendar.stopEvent(ev);
};

Calendar.calDragEnd = function (ev) {
	var cal = Calendar._C;
	if (!cal) {
		return false;
	}
	cal.dragging = false;
	with (Calendar) {
		removeEvent(document, "mousemove", calDragIt);
		removeEvent(document, "mouseup", calDragEnd);
		tableMouseUp(ev);
	}
	cal.hideShowCovered();
};

Calendar.dayMouseDown = function(ev) {
	var el = Calendar.getElement(ev);
	if (el.disabled) {
		return false;
	}
	var cal = el.calendar;
	cal.activeDiv = el;
	Calendar._C = cal;
	if (el.navtype != 300) with (Calendar) {
		if (el.navtype == 50) {
			el._current = el.innerHTML;
			addEvent(document, "mousemove", tableMouseOver);
		} else
			addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver);
		addClass(el, "hilite active");
		addEvent(document, "mouseup", tableMouseUp);
	} else if (cal.isPopup) {
		cal._dragStart(ev);
	}
	if (el.navtype == -1 || el.navtype == 1) {
		if (cal.timeout) clearTimeout(cal.timeout);
		cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250);
	} else if (el.navtype == -2 || el.navtype == 2) {
		if (cal.timeout) clearTimeout(cal.timeout);
		cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250);
	} else {
		cal.timeout = null;
	}
	return Calendar.stopEvent(ev);
};

Calendar.dayMouseDblClick = function(ev) {
	Calendar.cellClick(Calendar.getElement(ev), ev || window.event);
	if (Calendar.is_ie) {
		document.selection.empty();
	}
};

Calendar.dayMouseOver = function(ev) {
	var el = Calendar.getElement(ev);
	if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) {
		return false;
	}
	if (el.ttip) {
		if (el.ttip.substr(0, 1) == "_") {
			el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1);
		}
		el.calendar.tooltips.innerHTML = el.ttip;
	}
	if (el.navtype != 300) {
		Calendar.addClass(el, "hilite");
		if (el.caldate) {
			Calendar.addClass(el.parentNode, "rowhilite");
			var cal = el.calendar;
			if (cal && cal.getDateToolTip) {
				var d = el.caldate;
				window.status = d;
				el.title = cal.getDateToolTip(d, d.getFullYear(), d.getMonth(), d.getDate());
			}
		}
	}
	return Calendar.stopEvent(ev);
};

Calendar.dayMouseOut = function(ev) {
	with (Calendar) {
		var el = getElement(ev);
		if (isRelated(el, ev) || _C || el.disabled)
			return false;
		removeClass(el, "hilite");
		if (el.caldate)
			removeClass(el.parentNode, "rowhilite");
		if (el.calendar)
			el.calendar.tooltips.innerHTML = _TT["SEL_DATE"];
		// return stopEvent(ev);
	}
};

/**
 *  A generic "click" handler :) handles all types of buttons defined in this
 *  calendar.
 */
Calendar.cellClick = function(el, ev) {
	var cal = el.calendar;
	var closing = false;
	var newdate = false;
	var date = null;
	if (typeof el.navtype == "undefined") {
		if (cal.currentDateEl) {
			Calendar.removeClass(cal.currentDateEl, "selected");
			Calendar.addClass(el, "selected");
			closing = (cal.currentDateEl == el);
			if (!closing) {
				cal.currentDateEl = el;
			}
		}
		cal.date.setDateOnly(el.caldate);
		date = cal.date;
		var other_month = !(cal.dateClicked = !el.otherMonth);
		if (!other_month && !cal.currentDateEl && cal.multiple)
			cal._toggleMultipleDate(new Date(date));
		else
			newdate = !el.disabled;
		// a date was clicked
		if (other_month)
			cal._init(cal.firstDayOfWeek, date);
	} else {
		if (el.navtype == 200) {
			Calendar.removeClass(el, "hilite");
			cal.callCloseHandler();
			return;
		}
		date = new Date(cal.date);
		if (el.navtype == 0)
			date.setDateOnly(new Date()); // TODAY
		// unless "today" was clicked, we assume no date was clicked so
		// the selected handler will know not to close the calenar when
		// in single-click mode.
		// cal.dateClicked = (el.navtype == 0);
		cal.dateClicked = false;
		var year = date.getFullYear();
		var mon = date.getMonth();
		function setMonth(m) {
			var day = date.getDate();
			var max = date.getMonthDays(m);
			if (day > max) {
				date.setDate(max);
			}
			date.setMonth(m);
		};
		switch (el.navtype) {
		    case 400:
			Calendar.removeClass(el, "hilite");
			var text = Calendar._TT["ABOUT"];
			if (typeof text != "undefined") {
				text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : "";
			} else {
				// FIXME: this should be removed as soon as lang files get updated!
				text = "Help and about box text is not translated into this language.\n" +
					"If you know this language and you feel generous please update\n" +
					"the corresponding file in \"lang\" subdir to match calendar-en.js\n" +
					"and send it back to <mihai_bazon@yahoo.com> to get it into the distribution  ;-)\n\n" +
					"Thank you!\n" +
					"http://dynarch.com/mishoo/calendar.epl\n";
			}
			alert(text);
			return;
		    case -2:
			if (year > cal.minYear) {
				date.setFullYear(year - 1);
			}
			break;
		    case -1:
			if (mon > 0) {
				setMonth(mon - 1);
			} else if (year-- > cal.minYear) {
				date.setFullYear(year);
				setMonth(11);
			}
			break;
		    case 1:
			if (mon < 11) {
				setMonth(mon + 1);
			} else if (year < cal.maxYear) {
				date.setFullYear(year + 1);
				setMonth(0);
			}
			break;
		    case 2:
			if (year < cal.maxYear) {
				date.setFullYear(year + 1);
			}
			break;
		    case 100:
			cal.setFirstDayOfWeek(el.fdow);
			return;
		    case 50:
			var range = el._range;
			var current = el.innerHTML;
			for (var i = range.length; --i >= 0;)
				if (range[i] == current)
					break;
			if (ev && ev.shiftKey) {
				if (--i < 0)
					i = range.length - 1;
			} else if ( ++i >= range.length )
				i = 0;
			var newval = range[i];
			el.innerHTML = newval;
			cal.onUpdateTime();
			return;
		    case 0:
			// TODAY will bring us here
			if ((typeof cal.getDateStatus == "function") &&
			    cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) {
				return false;
			}
			break;
		}
		if (!date.equalsTo(cal.date)) {
			cal.setDate(date);
			newdate = true;
		} else if (el.navtype == 0)
			newdate = closing = true;
	}
	if (newdate) {
		ev && cal.callHandler();
	}
	if (closing) {
		Calendar.removeClass(el, "hilite");
		ev && cal.callCloseHandler();
	}
};

// END: CALENDAR STATIC FUNCTIONS

// BEGIN: CALENDAR OBJECT FUNCTIONS

/**
 *  This function creates the calendar inside the given parent.  If _par is
 *  null than it creates a popup calendar inside the BODY element.  If _par is
 *  an element, be it BODY, then it creates a non-popup calendar (still
 *  hidden).  Some properties need to be set before calling this function.
 */
Calendar.prototype.create = function (_par) {
	var parent = null;
	if (! _par) {
		// default parent is the document body, in which case we create
		// a popup calendar.
		parent = document.getElementsByTagName("body")[0];
		this.isPopup = true;
	} else {
		parent = _par;
		this.isPopup = false;
	}
	this.date = this.dateStr ? new Date(this.dateStr) : new Date();

	var table = Calendar.createElement("table");
	this.table = table;
	table.cellSpacing = 0;
	table.cellPadding = 0;
	table.calendar = this;
	Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown);

	var div = Calendar.createElement("div");
	this.element = div;
	div.className = "calendar";
	if (this.isPopup) {
		div.style.position = "absolute";
		div.style.display = "none";
	}
	div.appendChild(table);

	var thead = Calendar.createElement("thead", table);
	var cell = null;
	var row = null;

	var cal = this;
	var hh = function (text, cs, navtype) {
		cell = Calendar.createElement("td", row);
		cell.colSpan = cs;
		cell.className = "button";
		if (navtype != 0 && Math.abs(navtype) <= 2)
			cell.className += " nav";
		Calendar._add_evs(cell);
		cell.calendar = cal;
		cell.navtype = navtype;
		cell.innerHTML = "<div unselectable='on'>" + text + "</div>";
		return cell;
	};

	row = Calendar.createElement("tr", thead);
	var title_length = 6;
	(this.isPopup) && --title_length;
	(this.weekNumbers) && ++title_length;

	hh("?", 1, 400).ttip = Calendar._TT["INFO"];
	this.title = hh("", title_length, 300);
	this.title.className = "title";
	if (this.isPopup) {
		this.title.ttip = Calendar._TT["DRAG_TO_MOVE"];
		this.title.style.cursor = "move";
		hh("&#x00d7;", 1, 200).ttip = Calendar._TT["CLOSE"];
	}

	row = Calendar.createElement("tr", thead);
	row.className = "headrow";

	this._nav_py = hh("&#x00ab;", 1, -2);
	this._nav_py.ttip = Calendar._TT["PREV_YEAR"];

	this._nav_pm = hh("&#x2039;", 1, -1);
	this._nav_pm.ttip = Calendar._TT["PREV_MONTH"];

	this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0);
	this._nav_now.ttip = Calendar._TT["GO_TODAY"];

	this._nav_nm = hh("&#x203a;", 1, 1);
	this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"];

	this._nav_ny = hh("&#x00bb;", 1, 2);
	this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"];

	// day names
	row = Calendar.createElement("tr", thead);
	row.className = "daynames";
	if (this.weekNumbers) {
		cell = Calendar.createElement("td", row);
		cell.className = "name wn";
		cell.innerHTML = Calendar._TT["WK"];
	}
	for (var i = 7; i > 0; --i) {
		cell = Calendar.createElement("td", row);
		if (!i) {
			cell.navtype = 100;
			cell.calendar = this;
			Calendar._add_evs(cell);
		}
	}
	this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild;
	this._displayWeekdays();

	var tbody = Calendar.createElement("tbody", table);
	this.tbody = tbody;

	for (i = 6; i > 0; --i) {
		row = Calendar.createElement("tr", tbody);
		if (this.weekNumbers) {
			cell = Calendar.createElement("td", row);
		}
		for (var j = 7; j > 0; --j) {
			cell = Calendar.createElement("td", row);
			cell.calendar = this;
			Calendar._add_evs(cell);
		}
	}

	if (this.showsTime) {
		row = Calendar.createElement("tr", tbody);
		row.className = "time";

		cell = Calendar.createElement("td", row);
		cell.className = "time";
		cell.colSpan = 2;
		cell.innerHTML = Calendar._TT["TIME"] || "&nbsp;";

		cell = Calendar.createElement("td", row);
		cell.className = "time";
		cell.colSpan = this.weekNumbers ? 4 : 3;

		(function(){
			function makeTimePart(className, init, range_start, range_end) {
				var part = Calendar.createElement("span", cell);
				part.className = className;
				part.innerHTML = init;
				part.calendar = cal;
				part.ttip = Calendar._TT["TIME_PART"];
				part.navtype = 50;
				part._range = [];
				if (typeof range_start != "number")
					part._range = range_start;
				else {
					for (var i = range_start; i <= range_end; ++i) {
						var txt;
						if (i < 10 && range_end >= 10) txt = '0' + i;
						else txt = '' + i;
						part._range[part._range.length] = txt;
					}
				}
				Calendar._add_evs(part);
				return part;
			};
			var hrs = cal.date.getHours();
			var mins = cal.date.getMinutes();
			var t12 = !cal.time24;
			var pm = (hrs > 12);
			if (t12 && pm) hrs -= 12;
			var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23);
			var span = Calendar.createElement("span", cell);
			span.innerHTML = ":";
			span.className = "colon";
			var M = makeTimePart("minute", mins, 0, 59);
			var AP = null;
			cell = Calendar.createElement("td", row);
			cell.className = "time";
			cell.colSpan = 2;
			if (t12)
				AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]);
			else
				cell.innerHTML = "&nbsp;";

			cal.onSetTime = function() {
				var pm, hrs = this.date.getHours(),
					mins = this.date.getMinutes();
				if (t12) {
					pm = (hrs >= 12);
					if (pm) hrs -= 12;
					if (hrs == 0) hrs = 12;
					AP.innerHTML = pm ? "pm" : "am";
				}
				H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs;
				M.innerHTML = (mins < 10) ? ("0" + mins) : mins;
			};

			cal.onUpdateTime = function() {
				var date = this.date;
				var h = parseInt(H.innerHTML, 10);
				if (t12) {
					if (/pm/i.test(AP.innerHTML) && h < 12)
						h += 12;
					else if (/am/i.test(AP.innerHTML) && h == 12)
						h = 0;
				}
				var d = date.getDate();
				var m = date.getMonth();
				var y = date.getFullYear();
				date.setHours(h);
				date.setMinutes(parseInt(M.innerHTML, 10));
				date.setFullYear(y);
				date.setMonth(m);
				date.setDate(d);
				this.dateClicked = false;
				this.callHandler();
			};
		})();
	} else {
		this.onSetTime = this.onUpdateTime = function() {};
	}

	var tfoot = Calendar.createElement("tfoot", table);

	row = Calendar.createElement("tr", tfoot);
	row.className = "footrow";

	cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300);
	cell.className = "ttip";
	if (this.isPopup) {
		cell.ttip = Calendar._TT["DRAG_TO_MOVE"];
		cell.style.cursor = "move";
	}
	this.tooltips = cell;

	div = Calendar.createElement("div", this.element);
	this.monthsCombo = div;
	div.className = "combo";
	for (i = 0; i < Calendar._MN.length; ++i) {
		var mn = Calendar.createElement("div");
		mn.className = Calendar.is_ie ? "label-IEfix" : "label";
		mn.month = i;
		mn.innerHTML = Calendar._SMN[i];
		div.appendChild(mn);
	}

	div = Calendar.createElement("div", this.element);
	this.yearsCombo = div;
	div.className = "combo";
	for (i = 12; i > 0; --i) {
		var yr = Calendar.createElement("div");
		yr.className = Calendar.is_ie ? "label-IEfix" : "label";
		div.appendChild(yr);
	}

	this._init(this.firstDayOfWeek, this.date);
	parent.appendChild(this.element);
};

/** keyboard navigation, only for popup calendars */
Calendar._keyEvent = function(ev) {
	var cal = window._dynarch_popupCalendar;
	if (!cal || cal.multiple)
		return false;
	(Calendar.is_ie) && (ev = window.event);
	var act = (Calendar.is_ie || ev.type == "keypress"),
		K = ev.keyCode;
	if (ev.ctrlKey) {
		switch (K) {
		    case 37: // KEY left
			act && Calendar.cellClick(cal._nav_pm);
			break;
		    case 38: // KEY up
			act && Calendar.cellClick(cal._nav_py);
			break;
		    case 39: // KEY right
			act && Calendar.cellClick(cal._nav_nm);
			break;
		    case 40: // KEY down
			act && Calendar.cellClick(cal._nav_ny);
			break;
		    default:
			return false;
		}
	} else switch (K) {
	    case 32: // KEY space (now)
		Calendar.cellClick(cal._nav_now);
		break;
	    case 27: // KEY esc
		act && cal.callCloseHandler();
		break;
	    case 37: // KEY left
	    case 38: // KEY up
	    case 39: // KEY right
	    case 40: // KEY down
		if (act) {
			var prev, x, y, ne, el, step;
			prev = K == 37 || K == 38;
			step = (K == 37 || K == 39) ? 1 : 7;
			function setVars() {
				el = cal.currentDateEl;
				var p = el.pos;
				x = p & 15;
				y = p >> 4;
				ne = cal.ar_days[y][x];
			};setVars();
			function prevMonth() {
				var date = new Date(cal.date);
				date.setDate(date.getDate() - step);
				cal.setDate(date);
			};
			function nextMonth() {
				var date = new Date(cal.date);
				date.setDate(date.getDate() + step);
				cal.setDate(date);
			};
			while (1) {
				switch (K) {
				    case 37: // KEY left
					if (--x >= 0)
						ne = cal.ar_days[y][x];
					else {
						x = 6;
						K = 38;
						continue;
					}
					break;
				    case 38: // KEY up
					if (--y >= 0)
						ne = cal.ar_days[y][x];
					else {
						prevMonth();
						setVars();
					}
					break;
				    case 39: // KEY right
					if (++x < 7)
						ne = cal.ar_days[y][x];
					else {
						x = 0;
						K = 40;
						continue;
					}
					break;
				    case 40: // KEY down
					if (++y < cal.ar_days.length)
						ne = cal.ar_days[y][x];
					else {
						nextMonth();
						setVars();
					}
					break;
				}
				break;
			}
			if (ne) {
				if (!ne.disabled)
					Calendar.cellClick(ne);
				else if (prev)
					prevMonth();
				else
					nextMonth();
			}
		}
		break;
	    case 13: // KEY enter
		if (act)
			Calendar.cellClick(cal.currentDateEl, ev);
		break;
	    default:
		return false;
	}
	return Calendar.stopEvent(ev);
};

/**
 *  (RE)Initializes the calendar to the given date and firstDayOfWeek
 */
Calendar.prototype._init = function (firstDayOfWeek, date) {
	var today = new Date(),
		TY = today.getFullYear(),
		TM = today.getMonth(),
		TD = today.getDate();
	this.table.style.visibility = "hidden";
	var year = date.getFullYear();
	if (year < this.minYear) {
		year = this.minYear;
		date.setFullYear(year);
	} else if (year > this.maxYear) {
		year = this.maxYear;
		date.setFullYear(year);
	}
	this.firstDayOfWeek = firstDayOfWeek;
	this.date = new Date(date);
	var month = date.getMonth();
	var mday = date.getDate();
	var no_days = date.getMonthDays();

	// calendar voodoo for computing the first day that would actually be
	// displayed in the calendar, even if it's from the previous month.
	// WARNING: this is magic. ;-)
	date.setDate(1);
	var day1 = (date.getDay() - this.firstDayOfWeek) % 7;
	if (day1 < 0)
		day1 += 7;
	date.setDate(-day1);
	date.setDate(date.getDate() + 1);

	var row = this.tbody.firstChild;
	var MN = Calendar._SMN[month];
	var ar_days = this.ar_days = new Array();
	var weekend = Calendar._TT["WEEKEND"];
	var dates = this.multiple ? (this.datesCells = {}) : null;
	for (var i = 0; i < 6; ++i, row = row.nextSibling) {
		var cell = row.firstChild;
		if (this.weekNumbers) {
			cell.className = "day wn";
			cell.innerHTML = date.getWeekNumber();
			cell = cell.nextSibling;
		}
		row.className = "daysrow";
		var hasdays = false, iday, dpos = ar_days[i] = [];
		for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) {
			iday = date.getDate();
			var wday = date.getDay();
			cell.className = "day";
			cell.pos = i << 4 | j;
			dpos[j] = cell;
			var current_month = (date.getMonth() == month);
			if (!current_month) {
				if (this.showsOtherMonths) {
					cell.className += " othermonth";
					cell.otherMonth = true;
				} else {
					cell.className = "emptycell";
					cell.innerHTML = "&nbsp;";
					cell.disabled = true;
					continue;
				}
			} else {
				cell.otherMonth = false;
				hasdays = true;
			}
			cell.disabled = false;
			cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday;
			if (dates)
				dates[date.print("%Y%m%d")] = cell;
			if (this.getDateStatus) {
				var status = this.getDateStatus(date, year, month, iday);
				if (status === true) {
					cell.className += " disabled";
					cell.disabled = true;
				} else {
					if (/disabled/i.test(status))
						cell.disabled = true;
					cell.className += " " + status;
				}
			}
			if (!cell.disabled) {
				cell.caldate = new Date(date);
				cell.ttip = "_";
				if (!this.multiple && current_month
				    && iday == mday && this.hiliteToday) {
					cell.className += " selected";
					this.currentDateEl = cell;
				}
				if (date.getFullYear() == TY &&
				    date.getMonth() == TM &&
				    iday == TD) {
					cell.className += " today";
					cell.ttip += Calendar._TT["PART_TODAY"];
				}
				if (weekend.indexOf(wday.toString()) != -1)
					cell.className += cell.otherMonth ? " oweekend" : " weekend";
			}
		}
		if (!(hasdays || this.showsOtherMonths))
			row.className = "emptyrow";
	}
	this.title.innerHTML = Calendar._MN[month] + ", " + year;
	this.onSetTime();
	this.table.style.visibility = "visible";
	this._initMultipleDates();
	// PROFILE
	// this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms";
};

Calendar.prototype._initMultipleDates = function() {
	if (this.multiple) {
		for (var i in this.multiple) {
			var cell = this.datesCells[i];
			var d = this.multiple[i];
			if (!d)
				continue;
			if (cell)
				cell.className += " selected";
		}
	}
};

Calendar.prototype._toggleMultipleDate = function(date) {
	if (this.multiple) {
		var ds = date.print("%Y%m%d");
		var cell = this.datesCells[ds];
		if (cell) {
			var d = this.multiple[ds];
			if (!d) {
				Calendar.addClass(cell, "selected");
				this.multiple[ds] = date;
			} else {
				Calendar.removeClass(cell, "selected");
				delete this.multiple[ds];
			}
		}
	}
};

Calendar.prototype.setDateToolTipHandler = function (unaryFunction) {
	this.getDateToolTip = unaryFunction;
};

/**
 *  Calls _init function above for going to a certain date (but only if the
 *  date is different than the currently selected one).
 */
Calendar.prototype.setDate = function (date) {
	if (!date.equalsTo(this.date)) {
		this._init(this.firstDayOfWeek, date);
	}
};

/**
 *  Refreshes the calendar.  Useful if the "disabledHandler" function is
 *  dynamic, meaning that the list of disabled date can change at runtime.
 *  Just * call this function if you think that the list of disabled dates
 *  should * change.
 */
Calendar.prototype.refresh = function () {
	this._init(this.firstDayOfWeek, this.date);
};

/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */
Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) {
	this._init(firstDayOfWeek, this.date);
	this._displayWeekdays();
};

/**
 *  Allows customization of what dates are enabled.  The "unaryFunction"
 *  parameter must be a function object that receives the date (as a JS Date
 *  object) and returns a boolean value.  If the returned value is true then
 *  the passed date will be marked as disabled.
 */
Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) {
	this.getDateStatus = unaryFunction;
};

/** Customization of allowed year range for the calendar. */
Calendar.prototype.setRange = function (a, z) {
	this.minYear = a;
	this.maxYear = z;
};

/** Calls the first user handler (selectedHandler). */
Calendar.prototype.callHandler = function () {
	if (this.onSelected) {
		this.onSelected(this, this.date.print(this.dateFormat));
	}
};

/** Calls the second user handler (closeHandler). */
Calendar.prototype.callCloseHandler = function () {
	if (this.onClose) {
		this.onClose(this);
	}
	this.hideShowCovered();
};

/** Removes the calendar object from the DOM tree and destroys it. */
Calendar.prototype.destroy = function () {
	var el = this.element.parentNode;
	el.removeChild(this.element);
	Calendar._C = null;
	window._dynarch_popupCalendar = null;
};

/**
 *  Moves the calendar element to a different section in the DOM tree (changes
 *  its parent).
 */
Calendar.prototype.reparent = function (new_parent) {
	var el = this.element;
	el.parentNode.removeChild(el);
	new_parent.appendChild(el);
};

// This gets called when the user presses a mouse button anywhere in the
// document, if the calendar is shown.  If the click was outside the open
// calendar this function closes it.
Calendar._checkCalendar = function(ev) {
	var calendar = window._dynarch_popupCalendar;
	if (!calendar) {
		return false;
	}
	var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev);
	for (; el != null && el != calendar.element; el = el.parentNode);
	if (el == null) {
		// calls closeHandler which should hide the calendar.
		window._dynarch_popupCalendar.callCloseHandler();
		return Calendar.stopEvent(ev);
	}
};

/** Shows the calendar. */
Calendar.prototype.show = function () {
	var rows = this.table.getElementsByTagName("tr");
	for (var i = rows.length; i > 0;) {
		var row = rows[--i];
		Calendar.removeClass(row, "rowhilite");
		var cells = row.getElementsByTagName("td");
		for (var j = cells.length; j > 0;) {
			var cell = cells[--j];
			Calendar.removeClass(cell, "hilite");
			Calendar.removeClass(cell, "active");
		}
	}
	this.element.style.display = "block";
	this.hidden = false;
	if (this.isPopup) {
		window._dynarch_popupCalendar = this;
		Calendar.addEvent(document, "keydown", Calendar._keyEvent);
		Calendar.addEvent(document, "keypress", Calendar._keyEvent);
		Calendar.addEvent(document, "mousedown", Calendar._checkCalendar);
	}
	this.hideShowCovered();
};

/**
 *  Hides the calendar.  Also removes any "hilite" from the class of any TD
 *  element.
 */
Calendar.prototype.hide = function () {
	if (this.isPopup) {
		Calendar.removeEvent(document, "keydown", Calendar._keyEvent);
		Calendar.removeEvent(document, "keypress", Calendar._keyEvent);
		Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar);
	}
	this.element.style.display = "none";
	this.hidden = true;
	this.hideShowCovered();
};

/**
 *  Shows the calendar at a given absolute position (beware that, depending on
 *  the calendar element style -- position property -- this might be relative
 *  to the parent's containing rectangle).
 */
Calendar.prototype.showAt = function (x, y) {
	var s = this.element.style;
	s.left = x + "px";
	s.top = y + "px";
	this.show();
};

/** Shows the calendar near a given element. */
Calendar.prototype.showAtElement = function (el, opts) {
	var self = this;
	var p = Calendar.getAbsolutePos(el);
	if (!opts || typeof opts != "string") {
		this.showAt(p.x, p.y + el.offsetHeight);
		return true;
	}
	function fixPosition(box) {
		if (box.x < 0)
			box.x = 0;
		if (box.y < 0)
			box.y = 0;
		var cp = document.createElement("div");
		var s = cp.style;
		s.position = "absolute";
		s.right = s.bottom = s.width = s.height = "0px";
		document.body.appendChild(cp);
		var br = Calendar.getAbsolutePos(cp);
		document.body.removeChild(cp);
		if (Calendar.is_ie) {
			br.y += document.body.scrollTop;
			br.x += document.body.scrollLeft;
		} else {
			br.y += window.scrollY;
			br.x += window.scrollX;
		}
		var tmp = box.x + box.width - br.x;
		if (tmp > 0) box.x -= tmp;
		tmp = box.y + box.height - br.y;
		if (tmp > 0) box.y -= tmp;
	};
	this.element.style.display = "block";
	Calendar.continuation_for_the_fucking_khtml_browser = function() {
		var w = self.element.offsetWidth;
		var h = self.element.offsetHeight;
		self.element.style.display = "none";
		var valign = opts.substr(0, 1);
		var halign = "l";
		if (opts.length > 1) {
			halign = opts.substr(1, 1);
		}
		// vertical alignment
		switch (valign) {
		    case "T": p.y -= h; break;
		    case "B": p.y += el.offsetHeight; break;
		    case "C": p.y += (el.offsetHeight - h) / 2; break;
		    case "t": p.y += el.offsetHeight - h; break;
		    case "b": break; // already there
		}
		// horizontal alignment
		switch (halign) {
		    case "L": p.x -= w; break;
		    case "R": p.x += el.offsetWidth; break;
		    case "C": p.x += (el.offsetWidth - w) / 2; break;
		    case "l": p.x += el.offsetWidth - w; break;
		    case "r": break; // already there
		}
		p.width = w;
		p.height = h + 40;
		self.monthsCombo.style.display = "none";
		fixPosition(p);
		self.showAt(p.x, p.y);
	};
	if (Calendar.is_khtml)
		setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10);
	else
		Calendar.continuation_for_the_fucking_khtml_browser();
};

/** Customizes the date format. */
Calendar.prototype.setDateFormat = function (str) {
	this.dateFormat = str;
};

/** Customizes the tooltip date format. */
Calendar.prototype.setTtDateFormat = function (str) {
	this.ttDateFormat = str;
};

/**
 *  Tries to identify the date represented in a string.  If successful it also
 *  calls this.setDate which moves the calendar to the given date.
 */
Calendar.prototype.parseDate = function(str, fmt) {
	if (!fmt)
		fmt = this.dateFormat;
	this.setDate(Date.parseDate(str, fmt));
};

Calendar.prototype.hideShowCovered = function () {
	if (!Calendar.is_ie && !Calendar.is_opera)
		return;
	function getVisib(obj){
		var value = obj.style.visibility;
		if (!value) {
			if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
				if (!Calendar.is_khtml)
					value = document.defaultView.
						getComputedStyle(obj, "").getPropertyValue("visibility");
				else
					value = '';
			} else if (obj.currentStyle) { // IE
				value = obj.currentStyle.visibility;
			} else
				value = '';
		}
		return value;
	};

	var tags = new Array("applet", "iframe", "select");
	var el = this.element;

	var p = Calendar.getAbsolutePos(el);
	var EX1 = p.x;
	var EX2 = el.offsetWidth + EX1;
	var EY1 = p.y;
	var EY2 = el.offsetHeight + EY1;

	for (var k = tags.length; k > 0; ) {
		var ar = document.getElementsByTagName(tags[--k]);
		var cc = null;

		for (var i = ar.length; i > 0;) {
			cc = ar[--i];

			p = Calendar.getAbsolutePos(cc);
			var CX1 = p.x;
			var CX2 = cc.offsetWidth + CX1;
			var CY1 = p.y;
			var CY2 = cc.offsetHeight + CY1;

			if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
				if (!cc.__msh_save_visibility) {
					cc.__msh_save_visibility = getVisib(cc);
				}
				cc.style.visibility = cc.__msh_save_visibility;
			} else {
				if (!cc.__msh_save_visibility) {
					cc.__msh_save_visibility = getVisib(cc);
				}
				cc.style.visibility = "hidden";
			}
		}
	}
};

/** Internal function; it displays the bar with the names of the weekday. */
Calendar.prototype._displayWeekdays = function () {
	var fdow = this.firstDayOfWeek;
	var cell = this.firstdayname;
	var weekend = Calendar._TT["WEEKEND"];
	for (var i = 0; i < 7; ++i) {
		cell.className = "day name";
		var realday = (i + fdow) % 7;
		if (i) {
			cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]);
			cell.navtype = 100;
			cell.calendar = this;
			cell.fdow = realday;
			Calendar._add_evs(cell);
		}
		if (weekend.indexOf(realday.toString()) != -1) {
			Calendar.addClass(cell, "weekend");
		}
		cell.innerHTML = Calendar._SDN[(i + fdow) % 7];
		cell = cell.nextSibling;
	}
};

/** Internal function.  Hides all combo boxes that might be displayed. */
Calendar.prototype._hideCombos = function () {
	this.monthsCombo.style.display = "none";
	this.yearsCombo.style.display = "none";
};

/** Internal function.  Starts dragging the element. */
Calendar.prototype._dragStart = function (ev) {
	if (this.dragging) {
		return;
	}
	this.dragging = true;
	var posX;
	var posY;
	if (Calendar.is_ie) {
		posY = window.event.clientY + document.body.scrollTop;
		posX = window.event.clientX + document.body.scrollLeft;
	} else {
		posY = ev.clientY + window.scrollY;
		posX = ev.clientX + window.scrollX;
	}
	var st = this.element.style;
	this.xOffs = posX - parseInt(st.left);
	this.yOffs = posY - parseInt(st.top);
	with (Calendar) {
		addEvent(document, "mousemove", calDragIt);
		addEvent(document, "mouseup", calDragEnd);
	}
};

// BEGIN: DATE OBJECT PATCHES

/** Adds the number of days array to the Date object. */
Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31);

/** Constants used for time computations */
Date.SECOND = 1000 /* milliseconds */;
Date.MINUTE = 60 * Date.SECOND;
Date.HOUR   = 60 * Date.MINUTE;
Date.DAY    = 24 * Date.HOUR;
Date.WEEK   =  7 * Date.DAY;

Date.parseDate = function(str, fmt) {
	var today = new Date();
	var y = 0;
	var m = -1;
	var d = 0;
	var a = str.split(/\W+/);
	var b = fmt.match(/%./g);
	var i = 0, j = 0;
	var hr = 0;
	var min = 0;
	for (i = 0; i < a.length; ++i) {
		if (!a[i])
			continue;
		switch (b[i]) {
		    case "%d":
		    case "%e":
			d = parseInt(a[i], 10);
			break;

		    case "%m":
			m = parseInt(a[i], 10) - 1;
			break;

		    case "%Y":
		    case "%y":
			y = parseInt(a[i], 10);
			(y < 100) && (y += (y > 29) ? 1900 : 2000);
			break;

		    case "%b":
		    case "%B":
			for (j = 0; j < 12; ++j) {
				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; }
			}
			break;

		    case "%H":
		    case "%I":
		    case "%k":
		    case "%l":
			hr = parseInt(a[i], 10);
			break;

		    case "%P":
		    case "%p":
			if (/pm/i.test(a[i]) && hr < 12)
				hr += 12;
			else if (/am/i.test(a[i]) && hr >= 12)
				hr -= 12;
			break;

		    case "%M":
			min = parseInt(a[i], 10);
			break;
		}
	}
	if (isNaN(y)) y = today.getFullYear();
	if (isNaN(m)) m = today.getMonth();
	if (isNaN(d)) d = today.getDate();
	if (isNaN(hr)) hr = today.getHours();
	if (isNaN(min)) min = today.getMinutes();
	if (y != 0 && m != -1 && d != 0)
		return new Date(y, m, d, hr, min, 0);
	y = 0; m = -1; d = 0;
	for (i = 0; i < a.length; ++i) {
		if (a[i].search(/[a-zA-Z]+/) != -1) {
			var t = -1;
			for (j = 0; j < 12; ++j) {
				if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; }
			}
			if (t != -1) {
				if (m != -1) {
					d = m+1;
				}
				m = t;
			}
		} else if (parseInt(a[i], 10) <= 12 && m == -1) {
			m = a[i]-1;
		} else if (parseInt(a[i], 10) > 31 && y == 0) {
			y = parseInt(a[i], 10);
			(y < 100) && (y += (y > 29) ? 1900 : 2000);
		} else if (d == 0) {
			d = a[i];
		}
	}
	if (y == 0)
		y = today.getFullYear();
	if (m != -1 && d != 0)
		return new Date(y, m, d, hr, min, 0);
	return today;
};

/** Returns the number of days in the current month */
Date.prototype.getMonthDays = function(month) {
	var year = this.getFullYear();
	if (typeof month == "undefined") {
		month = this.getMonth();
	}
	if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) {
		return 29;
	} else {
		return Date._MD[month];
	}
};

/** Returns the number of day in the year. */
Date.prototype.getDayOfYear = function() {
	var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
	var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0);
	var time = now - then;
	return Math.floor(time / Date.DAY);
};

/** Returns the number of the week in year, as defined in ISO 8601. */
Date.prototype.getWeekNumber = function() {
	var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0);
	var DoW = d.getDay();
	d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu
	var ms = d.valueOf(); // GMT
	d.setMonth(0);
	d.setDate(4); // Thu in Week 1
	return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1;
};

/** Checks date and time equality */
Date.prototype.equalsTo = function(date) {
	return ((this.getFullYear() == date.getFullYear()) &&
		(this.getMonth() == date.getMonth()) &&
		(this.getDate() == date.getDate()) &&
		(this.getHours() == date.getHours()) &&
		(this.getMinutes() == date.getMinutes()));
};

/** Set only the year, month, date parts (keep existing time) */
Date.prototype.setDateOnly = function(date) {
	var tmp = new Date(date);
	this.setDate(1);
	this.setFullYear(tmp.getFullYear());
	this.setMonth(tmp.getMonth());
	this.setDate(tmp.getDate());
};

/** Prints the date in a string according to the given format. */
Date.prototype.print = function (str) {
	var m = this.getMonth();
	var d = this.getDate();
	var y = this.getFullYear();
	var wn = this.getWeekNumber();
	var w = this.getDay();
	var s = {};
	var hr = this.getHours();
	var pm = (hr >= 12);
	var ir = (pm) ? (hr - 12) : hr;
	var dy = this.getDayOfYear();
	if (ir == 0)
		ir = 12;
	var min = this.getMinutes();
	var sec = this.getSeconds();
	s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N]
	s["%A"] = Calendar._DN[w]; // full weekday name
	s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N]
	s["%B"] = Calendar._MN[m]; // full month name
	// FIXME: %c : preferred date and time representation for the current locale
	s["%C"] = 1 + Math.floor(y / 100); // the century number
	s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31)
	s["%e"] = d; // the day of the month (range 1 to 31)
	// FIXME: %D : american date style: %m/%d/%y
	// FIXME: %E, %F, %G, %g, %h (man strftime)
	s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format)
	s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format)
	s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366)
	s["%k"] = hr;		// hour, range 0 to 23 (24h format)
	s["%l"] = ir;		// hour, range 1 to 12 (12h format)
	s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12
	s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59
	s["%n"] = "\n";		// a newline character
	s["%p"] = pm ? "PM" : "AM";
	s["%P"] = pm ? "pm" : "am";
	// FIXME: %r : the time in am/pm notation %I:%M:%S %p
	// FIXME: %R : the time in 24-hour notation %H:%M
	s["%s"] = Math.floor(this.getTime() / 1000);
	s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59
	s["%t"] = "\t";		// a tab character
	// FIXME: %T : the time in 24-hour notation (%H:%M:%S)
	s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn;
	s["%u"] = w + 1;	// the day of the week (range 1 to 7, 1 = MON)
	s["%w"] = w;		// the day of the week (range 0 to 6, 0 = SUN)
	// FIXME: %x : preferred date representation for the current locale without the time
	// FIXME: %X : preferred time representation for the current locale without the date
	s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99)
	s["%Y"] = y;		// year with the century
	s["%%"] = "%";		// a literal '%' character

	var re = /%./g;
	if (!Calendar.is_ie5 && !Calendar.is_khtml)
		return str.replace(re, function (par) { return s[par] || par; });

	var a = str.match(re);
	for (var i = 0; i < a.length; i++) {
		var tmp = s[a[i]];
		if (tmp) {
			re = new RegExp(a[i], 'g');
			str = str.replace(re, tmp);
		}
	}

	return str;
};

Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear;
Date.prototype.setFullYear = function(y) {
	var d = new Date(this);
	d.__msh_oldSetFullYear(y);
	if (d.getMonth() != this.getMonth())
		this.setDate(28);
	this.__msh_oldSetFullYear(y);
};

// END: DATE OBJECT PATCHES


// global object that remembers the calendar
window._dynarch_popupCalendar = null;


SPECIAL_DAYS = [];

	SPECIAL_DAYS[0] = {};
	SPECIAL_DAYS[0].year = 2010;
	SPECIAL_DAYS[0].month = 0;
	SPECIAL_DAYS[0].day = 1;

	SPECIAL_DAYS[1] = {};
	SPECIAL_DAYS[1].year = 2010;
	SPECIAL_DAYS[1].month = 3;
	SPECIAL_DAYS[1].day = 23;

	SPECIAL_DAYS[2] = {};
	SPECIAL_DAYS[2].year = 2010;
	SPECIAL_DAYS[2].month = 4;
	SPECIAL_DAYS[2].day = 1;

	SPECIAL_DAYS[3] = {};
	SPECIAL_DAYS[3].year = 2010;
	SPECIAL_DAYS[3].month = 4;
	SPECIAL_DAYS[3].day = 19;

	SPECIAL_DAYS[4] = {};
	SPECIAL_DAYS[4].year = 2010;
	SPECIAL_DAYS[4].month = 7;
	SPECIAL_DAYS[4].day = 30;

	SPECIAL_DAYS[5] = {};
	SPECIAL_DAYS[5].year = 2010;
	SPECIAL_DAYS[5].month = 8;
	SPECIAL_DAYS[5].day = 9;

	SPECIAL_DAYS[6] = {};
	SPECIAL_DAYS[6].year = 2010;
	SPECIAL_DAYS[6].month = 8;
	SPECIAL_DAYS[6].day = 10;

	SPECIAL_DAYS[7] = {};
	SPECIAL_DAYS[7].year = 2010;
	SPECIAL_DAYS[7].month = 8;
	SPECIAL_DAYS[7].day = 11;

	SPECIAL_DAYS[8] = {};
	SPECIAL_DAYS[8].year = 2010;
	SPECIAL_DAYS[8].month = 9;
	SPECIAL_DAYS[8].day = 29;

	SPECIAL_DAYS[9] = {};
	SPECIAL_DAYS[9].year = 2010;
	SPECIAL_DAYS[9].month = 10;
	SPECIAL_DAYS[9].day = 16;

	SPECIAL_DAYS[10] = {};
	SPECIAL_DAYS[10].year = 2010;
	SPECIAL_DAYS[10].month = 10;
	SPECIAL_DAYS[10].day = 17;

	SPECIAL_DAYS[11] = {};
	SPECIAL_DAYS[11].year = 2010;
	SPECIAL_DAYS[11].month = 10;
	SPECIAL_DAYS[11].day = 18;

	SPECIAL_DAYS[12] = {};
	SPECIAL_DAYS[12].year = 2010;
	SPECIAL_DAYS[12].month = 10;
	SPECIAL_DAYS[12].day = 19;

	
Calendar._DN = new Array
(" Pazar ",
 " Pazartesi ",
 " Salı ",
 " Çarşamba ",
 " Perşembe ",
 " Cuma ",
 " Cumartesi ",
 " Pazar ");
Calendar._SDN = new Array
(" Paz ",
 " Pzt ",
 " Sal ",
 " Çar ",
 " Per ",
 " Cum ",
 " Cmt ",
 " Paz ");
Calendar._MN = new Array
(" Ocak ", 
 " Şubat ",
 " Mart ",
 " Nisan ",
 " Mayıs ",
 " Haziran ",
 " Temmuz ",
 " Ağustos ",
 " Eylül ",
 " Ekim ",
 " Kasım ",
 " Aralık ");
Calendar._SMN = new Array
(" Oca ", 
 " Şub ",
 " Mar ",
 " Nis ",
 " May ",
 " Haz ",
 " Tem ",
 " Agu ",
 " Eyl ",
 " Eki ",
 " Kas ",
 " Ara ");
Calendar._TT = {};
Calendar._TT["INFO"] = " Takvim Bilgileri ";
Calendar._TT["ABOUT"] ="WorkCube Date / Time\n" +
"\n\n" +
"Tarih Seçimi:\n" +
"- Yıl seçmek için \xab, \xbb butonlarını kullanın.\n" +
"- Ay seçmek için " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " butonlarını kullanın.\n" +
"- Daha hızlı seçim için yukarıdaki butonlardan herhangi birinde fare butonunu basılı tutun.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Saat seçimi:\n" +
"- Saat kısımlarından herhangi birini artırmak için üzerine tıklayın\n" +
"- veya azaltmak için Shift ile birlikte tıklayın\n" +
"- veya daha hızlı seçim için tıklayın ve sürükleyin.";
Calendar._TT["PREV_YEAR"] = " Önceki Yıl  ( Menü İçin Basılı Tutunuz )";
Calendar._TT["PREV_MONTH"] = " Önceki Ay  ( Menü İçin Basılı Tutunuz )";
Calendar._TT["GO_TODAY"] = " Bugüne Git ";
Calendar._TT["NEXT_MONTH"] = " Sonraki Ay  ( Menü İçin Basılı Tutunuz )";
Calendar._TT["NEXT_YEAR"] = " Sonraki Yıl  ( Menü İçin Basılı Tutunuz )";
Calendar._TT["SEL_DATE"] = " Tarih Seçiniz ";
Calendar._TT["DRAG_TO_MOVE"] = " Taşımak İçin Sürükleyiniz  ";
Calendar._TT["PART_TODAY"] = " ( Bugün )";
Calendar._TT["DAY_FIRST"] = " Hafta Başı %s Olsun .";
Calendar._TT["WEEKEND"] = "0,6";
Calendar._TT["CLOSE"] = " Kapat ";
Calendar._TT["TODAY"] = " Bugün ";
Calendar._TT["TIME_PART"] = "(Shift-)Tıklayınca veya taşıyınca değer değişmez.";
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";
Calendar._TT["WK"] = " hft ";
Calendar._TT["TIME"] = "Saat:";
Calendar.setup=function(params)
{
function param_default(pname,def)
		{
			if(typeof params[pname]=="undefined")
				{params[pname]=def;}
		};
param_default("inputField",null);
param_default("displayArea",null);
param_default("button",null);
param_default("eventName","click");
param_default("ifFormat","%Y/%m/%d");
param_default("daFormat","%Y/%m/%d");
param_default("singleClick",true);
param_default("disableFunc",null);
param_default("dateStatusFunc",params["disableFunc"]);
param_default("firstDay",1);
param_default("align","Br");
param_default("range",[1900,2999]);
param_default("weekNumbers",true);
param_default("flat",null);
param_default("flatCallback",null);
param_default("onSelect",null);
param_default("onClose",null);
param_default("onUpdate",null);
param_default("date",null);
param_default("showsTime",false);
param_default("timeFormat","24");
param_default("electric",true);
param_default("step",2);
param_default("position",null);
param_default("cache",false);
param_default("showOthers",false);
param_default("input_sira",null);
var tmp=["inputField","displayArea","button"];
	for(var i in tmp)
	{
		if(typeof params[tmp[i]]=="string")
			{
				if(params.input_sira)
					{
					my_sira_ = params.input_sira;
					params[tmp[i]] = document.getElementById(params[tmp[i]][my_sira_]);
					}
				else
					{
					params[tmp[i]]=document.getElementById(params[tmp[i]]);
					}
			}
	}

if(!(params.flat||params.inputField||params.displayArea||params.button))
	{
		alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");
		return false;
	}
	
function onSelect(cal)
	{
		var p=cal.params;
		var update=(cal.dateClicked||p.electric);
			if(update&&p.flat)
				{
					if(typeof p.flatCallback=="function")
						p.flatCallback(cal);
					else 
						alert("No flatCallback given -- doing nothing.");
					return false;
				}
			if(update&&p.inputField)
				{
					p.inputField.value=cal.date.print(p.ifFormat);
					if(typeof p.inputField.onchange=="function")
						p.inputField.onchange();
				}
			if(update&&p.displayArea)
				p.displayArea.innerHTML=cal.date.print(p.daFormat);
			if(update&&p.singleClick&&cal.dateClicked)
				cal.callCloseHandler();
			if(update&&typeof p.onUpdate=="function")
				p.onUpdate(cal);
	};
	
if(params.flat!=null)
	{
		if(typeof params.flat=="string")
			params.flat=document.getElementById(params.flat);
		if(!params.flat)
			{
				alert("Calendar.setup:\n  Flat specified but can't find parent.");
				return false;
			}
		var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);
		cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");
		cal.params=params;
		cal.weekNumbers=params.weekNumbers;
		cal.setRange(params.range[0],params.range[1]);
		cal.setDateStatusHandler(params.dateStatusFunc);
		cal.create(params.flat);
		cal.show();
		return false;
	}
	
	var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.parseDate(dateEl.value||dateEl.innerHTML);cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};}; 