/*!______________________________________________________________________*\
||                                                                      ||
|| __   __                        				            	  ||			
|| \ \ / /__  _ __   ___ __ _ 		- Fırat Ağdaş                 ||
||  \ V / _ \| '_ \ / __/ _` |		- Yonca New Media             ||
||   | | (_) | | | | (_| (_| |		- firat@yonca-ad.com          ||
||   |_|\___/|_| |_|\___\__,_|                                          ||
||                                                                      ||
||______________________________________________________________________||
\*                                                                      */

// #################################################################################################
// Kısa yollar - YUI Kütüphanesi, HASH URL 'Leri, Silienemez Veriler ve Console 

var phrase = phrase || new Array();								// Dil Kütüphanesi
var Dom = YAHOO.util.Dom;										// YUI Dom Kütüphanesi
var Event = YAHOO.util.Event;									// YUI Event Kütüphanesi
var Lang = YAHOO.lang;											// YUI Language Kütüphanesi
var UA = YAHOO.env.ua;											// YUI	User Agent Kütüphanesi
var Anim = YAHOO.util.Anim || null;								// YUI Animation Kütüphanesi
var Con = YAHOO.util.Connect || null;							// YUI Connect Kütüphanesi
var Cookie = YAHOO.util.Cookie || null;							// YUI Cookie Kütüphanesi
var UNDELETEABLES = UNDELETEABLES || new Array();				// Silinemeyen veriler
var __empty_function = function(){};							// Boş Fonksiyon			
var __true_function = function() { return true; };			// Sonucu True dönen boş bir fonksiyon

if (Lang.isUndefined(console))
{
	// Yararlı bir Hata Yakalama Aracı: http://www.my-debugbar.com/wiki/CompanionJS
	var console = {
		log:     __empty_function, 
		debug:   __empty_function, 
		info:    __empty_function, 
		warn:    __empty_function, 
		error:   __empty_function,
		assert:  __empty_function,
		dirxml:  __empty_function,
		time:    __empty_function,
		timeEnd: __empty_function
	};
}

var SECURITYHASH = SECURITYHASH || '';			// Güvenlik HASH
var ADMINHASH = ADMINHASH || '';				// Admin HASH
var SESSIONHASH = SESSIONHASH || '';			// Oturum HASH
var STYLEDIR = STYLEDIR || '';					// Tema alanı

var SECURITYHASHURL = (SECURITYHASH !== '') ? 'securityhash=' + SECURITYHASH + '&' : '';	// Güvenlik HASH
var ADMINHASHURL = (ADMINHASH !== '') ? 'adminhash=' + ADMINHASH + '&' : '';				// Admin HASH
var SESSIONURL = (SESSIONHASH !== '') ? 's=' + SESSIONHASH + '&' : '';						// Oturum HASH

var CP_AREA = (ADMINHASH !== '') ? true : false; // Yönetim Paneli Civarında işlem yapı mı?

// Windows işletim sistemi mi?
UA.win = (tlc(navigator.userAgent).indexOf('win') != -1) ? true : false;

// #################################################################################################
// Bazı Yararlı Araçlarla Yonca Kütüphanesi

/**
* Yonca_System Sınıfı
*
* Yonca Kütüphanesine ait fonksiyonları ve bilgileri taşır
*
* @class	Yonca_System
* @package	Yonca New Media
* @author	Fırat Ağdaş
* @version	1.0.0
*/
function Yonca_System()
{
	/**
	* ActiveX ve Flash oluşturucu
	*
	* @var	object
	*/
	this.ActiveX = null;
	
	/**
	* Window yüklendi mi?
	*
	* @var	boolean
	*/
	this.isWinLoaded = false;
	
	/**
	* Dom yüklendi mi?
	*
	* @var	boolean
	*/
	this.isDomLoaded = false;
	
	/**
	* Sistem Dialog, Render ve diğer sistem alanı yüklendi mi?
	*
	* @var	boolean
	*/
	this.isBoxAreaLoaded = false;
	
	/**
	* onDOMReady kayıtları
	*
	* @var	array
	*/
	this.domready_stack = new Array();
	
	/**
	* Yükleniyor ifadesi
	*
	* @var	object
	*/
	this.loading = null;
	
	/**
	* Dialog Nesnesi
	*
	* @var	object
	*/
	this.dialog = null;
	
	/**
	* Scroll Aktif?
	*
	* @var	object
	*/
	this.scroll_dragging = false;
	
	/**
	* Editör için Toggle
	*
	* @var	boolean
	*/
	this.toggle = false;
}

/**
* Yonca_System::init() fonksiyonu
*
* Gerekli Eventleri eklemeyi sağlar
*
* @return	void
*/
Yonca_System.prototype.init = function(funcname)
{
	// Window Yükleme eventi
	Event.addListener(window, 'load', function(e)
	{
		this.isWinLoaded = this.isDomLoaded = this.isBoxAreaLoaded = true;
	}, this, true);
	
	// Dom Yükleme eventi
	this.domready_register(function(){ Yonca.isDomLoaded = true; });
	
	// Box Area yükleme eventi
	Event.onContentReady('yncboxarea', function(){ Yonca.isBoxAreaLoaded = true; });
	
	// Scroll
	Event.on(window, 'scroll', Yonca_System.prototype.scroll_handler, this, true);
};

/**
* Yonca_System::domready_register fonksiyonu
*
* Event.onDOMReady için kayıt yapar
*
* @param	function	Fonksiyon adı
*
* @return	void
*/
Yonca_System.prototype.domready_register = function(funcname)
{
	this.domready_stack[this.domready_stack.length] = funcname;
};

/**
* Yonca_System::domready_register fonksiyonu
*
* Event.onDOMReady için kayıt yapar
*
* @param	function	Fonksiyon adı
*
* @return	void
*/
Yonca_System.prototype.domready_fire = function()
{
	if (this.domready_stack.length > 0)
	{
		var _this = this;
		Event.onDOMReady(function()
		{
			_this.isDomLoaded = true;
			for (var i = 0; i < _this.domready_stack.length; i++)
			{
				try
				{
					_this.domready_stack[i]();
				}
				catch (e)
				{
					console.warn('onDOMReady fonksiyonu çalıştırılırken hata oluştu: ' + _this.domready_stack[i]);
				}
				
				delete _this.domready_stack[i];
			}
		});
	}
};

/**
* Yonca_System::scroll_handler() fonksiyonu
*
* Scroll bitiminin ardından kullanılacak fonksiyon
*
* @return	void
*/
Yonca_System.prototype.scroll_handler = function()
{
	this.scroll_dragging = true;
	
	var _this = this;
	setTimeout(function(){ _this.scroll_dragging = false; }, 0); 
};

/**
* Yonca_System::dialog_hide_handler() fonksiyonu
*
* Box yüklüyse dialoğu kapar
*
* @return	void
*/
Yonca_System.prototype.dialog_hide_handler = function()
{
	if (Lang.isFunction(this.hide))
	{
		this.hide();
	}
};

Yonca_System.prototype.unicode_urlencode = function(text)
{
	text = escape(text.toString()).replace(/\+/g, '%2B');
	var matches = text.match(/(%([0-9A-F]{2}))/gi);
	if (matches)
	{
		for (var matchid = 0; matchid < matches.length; matchid++)
		{
			var code = matches[matchid].substring(1,3);
			if (parseInt(code, 16) >= 128)
			{
				text = text.replace(matches[matchid], '%u00' + code);
			}
		}
	}

	text = text.replace('%25', '%u0025');

	return text;
};


/**
* Yonca_System::toggle_editor() fonksiyonu
*
* Editörü textarea ile HTML karakterlerini değiştirerek aralarında geçiş yapmayı sağlar
*
* @param	object	InnovaEditor nesnesi
*
* @return	void
*/
Yonca_System.prototype.toggle_editor = function(editorobj)
{
	var idarea = eval('idArea' + editorobj.oName), iframe = eval('idContent' + editorobj.oName), textarea = Dom.get(editorobj.idTextArea);
	
	if (this.toggle === false)
	{
		// eval('var content = editorobj.get' + editorobj.mode + '();');
		// demek isterdim ama :) Detaylı incelemedim kodları yamuk yapmasın bize:p
				 
		var content = '';
		switch (editorobj.mode)
		{
			case 'HTMLBody':
				content = editorobj.getHTMLBody();
			break;
			case 'XHTMLBody':
				content = editorobj.getXHTMLBody();
			break;
			case 'XHTML':
				content = editorobj.getXHTML();
			break;
			case 'HTML':
				content = editorobj.getHTML();
			break;
			default:
				return false;
		}
	
		this.toggle = true;
		
		Dom.addClass(idarea, 'editor-hidden');
		Dom.addClass(iframe, 'editor-hidden');
		
		textarea.value = content.replace(/<\/?\w[^<>]*>/gi, '');
		textarea.untouch = textarea.value;

		Dom.setStyle(textarea, 'display', '');
	}	
	else
	{
		this.toggle = false;
		if (trim(textarea.untouch) != trim(textarea.value))
		{
			editorobj.loadHTML(textarea.value);
		}
		
		Dom.setStyle(textarea, 'display', 'none');
		
		Dom.removeClass(idarea, 'editor-hidden');
		Dom.removeClass(iframe, 'editor-hidden');
	}
};

Yonca_System.prototype.fetch_parent_obj = function(tagname, obj, verifyfunc)
{
	verifyfunc = Lang.isFunction(verifyfunc) ? verifyfunc : function(obj){ return true; };	
	while ((obj = obj.parentNode) !== null)
	{
		if (nn(obj) == tagname && verifyfunc(obj))
		{
			return obj;
		}
	}
	
	return null;
};

Yonca_System.prototype.set_visibility = function(obj, hide)
{
	obj = Lang.isObject(obj) ? obj : Dom.get(obj);
	if (!obj)
	{
		return false;
	}
	
	hide = hide || null;
	if (hide === null)
	{
		hide = (Dom.getStyle(obj, 'display') == 'none' ? false : true);
	}
	
	Dom.setStyle(obj, 'display', (hide ? 'none' : ''));
};

// Yonca Sınıfı kaydı
var Yonca = new Yonca_System();

// açılış fonksiyonları
Yonca.init();

// #################################################################################################
// Bazı PHP Simülasyon Kodları

/**
* PHP - in_array
*
* Bir dizi içinde, istenen değer mevcutsa true olarak döner...
*
* @param	mixed	Aranan değer
* @param	array	İçinde aranan kaynak
*
* @return	boolean	mevcut ise true, aksi taktirde false
*/
function ia(n, h)
{
	for (var i = 0; i < h.length; i++)
	{
		if (n == h[i])
		{
			return true;
		}
	}

	return false;
}

/**
* PHP - trim fonksiyonu
*
* Girilen stringin sağında ki ve solundaki boşlukları temizler
*
* @param	string	Sağ ve sol boşlukları Temizlenmek istenen değer
*
* @return	string	Sağ ve sol boşlukları Temizlenmiş değer...
*/
function trim(s)
{
	// return s.toString().replace(/^\s+|(\s+)$/g, '');
	return Lang.trim(s);
}

/**
* htmlspecialchars_uni fonksiyonu
*
* PHP htmlspecialchars fonksiyonunun daha temele indirgenmiş hali denebilir. 
* Yalnızca <, >, ", & karakterlerini enitity koda dönüştürür
*
* @param	string	Dönüşüm yapılacak olan karakter grubu
*
* @return	string	Dönüşüm yapılmış olan karakter grubu
*/
function htmlspecialchars_uni(str)
{
	str = '' + str;
	return str.replace('>', '&gt;').replace('<', '&lt;').replace('"', '&quot;').replace(/&(?!(amp;))/g, '&amp;');
}


/**
* sprintf fonksiyonu
*
* PHP sprintf fonksiyonunun daha temele indirgenmiş hali denebilir. Dil sistemi için kullanılır
*
* @param	string	Dönüşüm yapılacak olan karakter grubu
*
* @return	string	Dönüşüm yapılmış olan karakter grubu
*/
function sprintf()
{
	if (arguments && arguments.length > 1)
	{
		var mainvar = arguments[0];
		for (var i = 1; i < arguments.length; i++)
		{
			mainvar = mainvar.replace('%' + i + '$s', arguments[i]);
		}
		
		return mainvar;
	}
	
	return Lang.isUndefined(arguments[0]) ? false : arguments[0];
}

/**
* Doğrulama Mesajı
*/
function areyousure(_this, e)
{
	if (!confirm('Bu işlemin dönüşü yoktur.\nDevam etmek istediğinizden emin misiniz?'))
	{
		Event.preventDefault(e);
	}
	else
	{
		Event.preventDefault(e);
		window.location = String(_this.href).replace(/&(amp;)?nojs\=1/, '');
	}
}

function execute_selection_change(selval)
{
	if (!Lang.isUndefined(selval) && Lang.isString(selval) && selval != '')
	{
		eval(selval);
	} 
}

/**
* Gizli Form
*
* Genelde bir botuna ya da linke, Post methodlu
* form göndermek için kullanıyoruz.
*
* @param	string	Form Action URL
* @param	boolean	Post Methodu kullanılacak mı?
* @param	object	Post Verileri
* @param	string	(isteğe göre) Form için hedef frame ya da pencere
*
* @return	void
*/
function lhform(url, pm, datas, trg)
{
	var form = document.createElement('form');

	form.method = pm ? 'post' : 'get';
	form.target = Lang.isUndefined(trg) ? '_self' : trg;
	form.action = url;

	if (!datas['s'] && (SESSIONURL || pm))
	{
		datas['s'] = SESSIONHASH;
	}

	if (pm)
	{
		// Securityhash ve Adminhash gerekli değerlerdir.
		if (!datas['securityhash'])
		{
			datas['securityhash'] = SECURITYHASH;
		}

		if (!datas['adminhash'] && ADMINHASHURL)
		{
			datas['adminhash'] = ADMINHASH;
		}
	}

	for (var i in datas)
	{
		var io = document.createElement('input');
		io.type = 'hidden';
		io.name = i;
		io.value = datas[i];

		form.appendChild(io);
	}

	document.body.appendChild(form).submit();

	// eğer _self kullanılmadıysa formu body 'den kaldırıyoruz 
	if (trg != '_self')
	{
		document.body.removeChild(form);
	}
}

/**
* Küçük harflere indirge
* 
* Belirtilen bir stringin içerisinde büyük harf 
* mevcutsa küçük herfe indirger
*
* @param	string	Büyük harf içeren string
*
* @return	string	Küçük harfe indirgenmiş string
*/
function tlc(s)
{
	return s.toLowerCase();
}

/**
* Tag ya da Nod Adı
*
* Girilen bir Objenin Node adını küçük harflerle verir
*
* @param	object	Nod adı istenen obje
*
* @return	string	Nod adı
*/
function nn(o)
{
	return tlc(o.nodeName);
}

/**
* Ajax Indicator
*
* Eski Versiyon: Eski G-Mail stili sağ üst köşede Yükleniyor Yazısını hizalar, isteğe göre gösterir gizler
* Yeni Versiyon: Sayfa ortasında overlay ile birlikte yükleniyor model dialoğu çıkarır.
*
* @param	integer	Değer 0 'dan küçükse 2. parametre girilmeksizin  indicatoru gizler, aksi taktirde görüntüler
* @param	string	(isteğe göre) Yükleniyor... Yazısını değiştirmek için kullanılır.
*
* @return	void
*/
function axin(status, title, subtitle)
{
	title = title || 'YÜKLENİYOR';
	subtitle = subtitle ? '<div> ' + String(subtitle) + '</div>' : false;
	var header = '<div class="loading">' + String(title) + (subtitle ? subtitle : '</div>');
	
	if (CP_AREA)
	{
		Yonca.loading = Yonca.dialog.loading_render();
	}
	else
	{
		Yonca.loading = Yonca.dialog.site_loading_render();
	}
	
	// Yeni version da Modal Dialog kullanıyoruz
	Yonca.loading.set_header(header);
	if (status === false || status === 0)
	{
		// hiç birşey Bu noktada sadece başlık ya da alt başlık değiştiriliyor
	}
	else if (status < 0)
	{
		Yonca.loading.hide();
	}
	else
	{
		Yonca.loading.show();
	}
}



/**
* Obje ortalama fonksiyonu
*
* @param	mixed	Obje ID si ya da Objenin kendisi
*
* @return	void
*/
function center_object(idname)
{
	var obj = Lang.isObject(idname) ? idname : Dom.get(idname);
	var hx = Math.round(Dom.getDocumentScrollLeft(document) + (Dom.getViewportWidth() / 2) - (obj.offsetWidth / 2));
	var hy = Math.round(Dom.getDocumentScrollTop(document) + (Dom.getViewportHeight() / 2) - (obj.offsetHeight / 2));

	if (hy >= 170 && Dom.getDocumentScrollTop(document) == 0)
	{
		hy -= 150;
	}
	
	Dom.setXY(obj, [hx, hy], false);
}

function contain_obj(obj, refobj, obj_pos, topmargin)
{
	topmargin = topmargin? parseInt(topmargin, 10) : 0;
	obj = Lang.isObject(obj) ? obj : Dom.get(obj);
	refobj = Lang.isObject(refobj) ? refobj : Dom.get(refobj);

	var rocoord = Dom.getXY(refobj), vpwidth = Dom.getViewportWidth(), dif = 0;

	switch (obj_pos)
	{
		case 'center':
			if (obj.offsetWidth > refobj.offsetWidth)
			{
				rocoord[0] -= Math.round((obj.offsetWidth - refobj.offsetWidth) / 2);
			}
			else
			{
				rocoord[0] += Math.round((refobj.offsetWidth - obj.offsetWidth) / 2);
			}
		break;
		case 'left':
			rocoord[0] -= refobj.offsetWidth;
		break;
		case 'right':
			rocoord[0] += refobj.offsetWidth;
		break;
	}

	if (rocoord[0] > vpwidth)
	{
		rocoord[0] -= rocoord[0] - vpwdith;
	}

	rocoord[1] += topmargin;

	Dom.setXY(obj, rocoord, false);
}

var __PROC = null;
function basic_async_request(url, onsuccess, onfail, extarg, allowkill)
{
	onsuccess = Lang.isFunction(onsuccess) ? onsuccess : function(o){};
	onfail = Lang.isFunction(onfail) ? onfail : function(o){};
	extarg = extarg ? extarg : null;
	allowkill = !Lang.isUndefined(allowkill) ? allowkill : true;

	if (Con.isCallInProgress(__PROC))
	{
		if (allowkill)
		{
			Con.abort(__PROC);
		}
		else
		{
			alert('İşleminiz Devam etmekte lütfen bekleyin');
			return false;
		}
	}
	axin(1);

	__PROC = Con.asyncRequest('POST', url, {
		success: function(o)
		{
			if (o.responseXML)
			{
				var error = Dom.getElementsBy(function(){ return true; }, 'error', o.responseXML)[0];
				if (error)
				{
					axin(-1);
					if (CP_AREA)
					{
						Yonca.dialog.render('asyncrequestalertbox', error.firstChild.nodeValue, {
							modaldialog: true,
							icon: Yonca.dialog.icons.WARNING,
							buttons: [
								{ label: 'Tamam', isDefault: true }
							]
						});
					}
					else
					{
						alert(error.firstChild.nodeValue);
					}

					if (typeof o.argument != 'undefined' && typeof o.argument.onrequesterror != 'undefined' && Lang.isFunction(o.argument.onrequesterror))
					{
						o.argument.onrequesterror();
					}

					Con.abort(__PROC);

					return false;
				}

				var result = false;
				try
				{
					result = onsuccess(o);
				}
				catch (e)
				{
					
				}
				
				if (!result)
				{
					axin(-1);
				}
				
				Con.abort(__PROC);
			}
		},

		failure: function(o)
		{
			onfail(o);
			Con.abort(__PROC);
			axin(-1);
		},

		argument: extarg
	}, '' + SESSIONURL + SECURITYHASHURL + ADMINHASHURL + url.substr(url.indexOf('?') + 1) + '&ajax=1');
}

function winopen(url, winid, width, height, wresizable)
{
	var resizeable_value = ((typeof wresizable == 'undefined' || !wresizable) ? 'no' : 'yes');
	var winid = winid ? winid : 'Window', base = Dom.getElementsBy(__true_function, 'base');
	
	if (base && base[0] && base[0].href && !url.match(/^\w+:\/\//))
	{
		url = base[0].href + url;
	}
	
	var win = window.open(url, winid,
		"" + (typeof width != 'undefined' && width > 0 ? "width=" + width + "," : "")
		+ (typeof height != 'undefined' && height > 0? "height=" + height + "," : "")
		+ "status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,resizable=" + resizeable_value);

	win.focus();
	return win;
}


function calendar_register(calendarid)
{
	Yonca.domready_register(function()
	{
		function calbuttonclick(e, calendarid)
		{
			var dateproperties = dateproperties || {
				START_WEEKDAY:    1,
				MONTHS_SHORT:     ['Oca', '\u015eub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'A\u011fu', 'Eyl', 'Eki', 'Kas', 'Ara'],
				MONTHS_LONG:      [phrase['yui_month_1'], phrase['yui_month_2'], phrase['yui_month_3'], phrase['yui_month_4'], phrase['yui_month_5'], phrase['yui_month_6'], phrase['yui_month_7'], phrase['yui_month_8'], phrase['yui_month_9'], phrase['yui_month_10'], phrase['yui_month_11'], phrase['yui_month_12']],
				WEEKDAYS_LONG:    ['Pazar', 'Pazartesi', 'Sal\u0131', '\u00c7ar\u015famba', 'Per\u015fembe', 'Cuma', 'Cumartesi'],
				WEEKDAYS_MEDIUM:  ['Paz', 'Pts', 'Sal', '\u00c7ar', 'Per', 'Cum', 'Cts'],
				WEEKDAYS_SHORT:   [phrase['yui_sday_0'], phrase['yui_sday_1'], phrase['yui_sday_2'], phrase['yui_sday_3'], phrase['yui_sday_4'], phrase['yui_sday_5'], phrase['yui_sday_6']]
			};;

			if (typeof CALENDARNOW != 'undefined')
			{
				dateproperties.mindate = CALENDARNOW;
			}
			
			var calmenu = Dom.get('calmenucontainer'), calmenuid = 'calmenucontainer';
			if (!calmenu)
			{
				calmenu = document.createElement('div');
				calmenu.id = calmenuid;
				
				Dom.setStyle(calmenu, 'visibility', 'hidden');
				Dom.setStyle(calmenu, 'position', 'absolute');
				Dom.setStyle(calmenu, 'top', '-9999px');
				Dom.setStyle(calmenu, 'left', '-9999px');

				if (!CP_AREA)
				{
					Dom.addClass(calmenu, 'pcalendar');
					calmenu.innerHTML = '<table cellpadding="0" cellspacing="0" border="0" class="pcaltable">'
						+ '<tr><td class="calhead" colspan="2"><span class="calclosebtn" id="calclosebtn">&nbsp;</span> ' + phrase['tarih_secin'] + '</div></td></tr>'
						+ '<tr><td colspan="2"><div id="sitecalendar"></div></td></tr></table>';
					calmenuid = 'sitecalendar';
				}
				
				document.body.appendChild(calmenu);
			}
			else if (!CP_AREA)
			{
				calmenuid = 'sitecalendar';
			}

			var _this = this;
			calmenu.show = function()
			{
				Dom.setStyle(calmenu, 'visibility', 'visible');
				var coords = Dom.getXY(_this);
				
				var x = coords[0] + _this.offsetWidth, y = coords[1] + _this.offsetHeight, vpx = Dom.getDocumentWidth(), vpy = Dom.getDocumentHeight();
				if ((y + calmenu.offsetHeight) >= vpy)
				{
					var fy = ((y + calmenu.offsetHeight) - vpy);
					y = y - fy - 10;
				}
				
				Dom.setXY(calmenu, [x, y], false);
				calmenu.hidden_state = true;
			};
			
			calmenu.hide = function()
			{
				Dom.setStyle(calmenu, 'visibility', 'hidden');
				Dom.setXY(calmenu, [-9999, -9999], false);
				calmenu.hidden_state = false;
			};
			
			if (!CP_AREA)
			{
				Event.on('calclosebtn', 'click', calmenu.hide);
			}

			var calendar = new YAHOO.widget.Calendar('buttoncalendar', calmenuid, dateproperties);

			calendar.render();
			calendar.selectEvent.subscribe(function(stype, calargs)
			{
				if (calargs)
				{
                	var calarg = calargs[0][0], dayfield = Dom.get('day-field-' + calendarid);
					
					dayfield.value = calarg[2];
					Dom.get('year-field-' + calendarid).value = calarg[0];
					var selectobj = Dom.get('month-field-' + calendarid);
					
					if (CP_AREA)
					{
						for (i = 0; i < selectobj.options.length; i++)
						{
							if (selectobj.options[i].value == calarg[1])
							{
								selectobj.selectedIndex = i;
								break;
							}
						}
					}
					else
					{
						selectobj.value = calarg[1];
						Dom.get('calendar-select-' + calendarid).innerHTML = calarg[0] + '/' + calarg[1] + '/' + calarg[2];
					}
					
					if (dayfield.errid && dterr)
					{
						dterr(dayfield);
					}
					
					var obj = Dom.get('calendar_hidden_' + calendarid);
					if (obj)
					{
						obj.value = 1;
						if (obj.errid !== false && dterr) 
						{
							dterr(obj);
						}
					}
				}
                
				calmenu.hide();
			});
			
			calmenu.show();
		}
		
		Event.addListener('calendarbutton-' + calendarid, 'click', calbuttonclick, calendarid);
		Event.addListener(document, 'click', function(e)
		{
			var targ = Event.getTarget(e), calcon = Dom.get('calmenucontainer');
			if (targ && calcon && targ != calcon && targ.id.indexOf('calendarbutton-') == -1 && !Dom.isAncestor(calcon, targ) && calcon.hidden_state == true)
			{
				calcon.hide();
			}
		});
	});
}

function input_focus_event()
{
	if (this.value == this.firstValue)
	{
		this.value = '';
	}
}

function input_blur_event()
{
	if (this.value == '')
	{
		this.value = this.firstValue;
	}
}

function input_focus_register(inputid, firstValue)
{
	var inputobj = Dom.get(inputid);	
	if (inputobj.value.length > 0)
	{
		if (!inputobj.firstValue)
		{
			inputobj.firstValue = firstValue || inputobj.value;
		}
		
		Event.on(inputobj, 'focus', input_focus_event, inputobj, true);
		Event.on(inputobj, 'blur', input_blur_event, inputobj, true);
	}
}

function fetch_xml_node(xmlnode, tagname)
{
	var node = Dom.getElementsBy(function(){ return true; }, tagname, xmlnode);
	if (node && node[0] && node[0].firstChild)
	{
		return node[0].firstChild.nodeValue;
	}
	
	return null;
}

function pagenav_init_ajax(container, onloadfn)
{
	var pagenavs = Dom.getElementsByClassName('pagenav'), onloadfn = Lang.isFunction(onloadfn) ? onloadfn : function(){};
	if (pagenavs.length > 0)
	{
		for (var i = 0; i < pagenavs.length; i++)
		{
			var alinks = Dom.getElementsBy(__true_function, 'a', pagenavs[i]);
			for (var k = 0; k < alinks.length; k++)
			{
				Event.on(alinks[k], 'click', function(e, pagenavobj)
				{
					var _this = this;
					Event.preventDefault(e);
					basic_async_request(this.href, function(o)
					{
						Dom.get(container).innerHTML = fetch_xml_node(o.responseXML, 'node');
						var pagenav =  fetch_xml_node(o.responseXML, 'pagenav');
						if (!pagenav)
						{
							pagenav = '';
						}

						pagenavobj.innerHTML = pagenav;
						pagenav_init_ajax(container, onloadfn);
						if (typeof $ != 'undefined')
						{
							$(function(){ $('a.lightbox').lightBox(); });
						}
												
						try
						{
							onloadfn();
						}
						catch (e)
						{
							
						}
						
					}, function(o)
					{
					}, 
					{
						onrequesterror: function()
						{
							Dom.get(container).innerHTML = '';
						}
					}, true);
				}, pagenavs[i]);
			}
		}
	}
}

Yonca.domready_register(function()
{
	if (typeof $ != 'undefined')
	{
		$(function(){ $('a.lightbox').lightBox(); });
	}
	
	if (!CP_AREA)
	{
		pagenav_init_ajax('specific_ajax_wrapper');
	}
});

function emailregister()
{
	var email = Dom.get('registeremail'), reg = /^[a-z0-9.!#$%&\'*+-\/=?^_`{|}~]+@([0-9.]+|([^\s\'"<>@,;]+\.+[a-z]{2,6}))$/i;
	if (!email || !email.value || email.value.length == 0 || trim(email.value) == '' || !trim(email.value).match(reg))
	{
		alert('Geçersiz Mail Adresi');
		return false;
	}
	
	basic_async_request('index.php?do=register&email=' + trim(email.value), function(o){ alert('İşleminiz Başarıyla Gerçekleştirildi.\nİlginiz için teşekkür ederiz.') });
}


var CTRLKEY = 1, SHIFTKEY = 2, ALTKEY = 4, __KEYSTOCK = new Array(), __ONCTRL = false, __ONSHIFT = false, __ONALT = false;
function key_register(keyoption, keychar, regfunction)
{
	if (!(keyoption & (CTRLKEY | SHIFTKEY | ALTKEY)))
	{
		return false;
	}

	if (Lang.isUndefined(__KEYSTOCK[keyoption]))
	{
		__KEYSTOCK[keyoption] = new Array();
	}
	else if (!Lang.isUndefined(__KEYSTOCK[keyoption][keychar]))
	{
		return false;
	}

	keychar = tlc(keychar);

	regfunction = Lang.isFunction(regfunction) ? regfunction : function(){ window.location = regfunction; };
	__KEYSTOCK[keyoption][keychar] = regfunction;
}

Event.addListener(document, 'keydown', exec_keys);
Event.addListener(document, 'keyup', restore_keys);

function exec_keys(e)
{
	var keycode = e.keyCode ? e.keyCode : e.which;
	switch (keycode)
	{
		case 17:
			__ONCTRL = true;
		break;
		case 16:
			__ONSHIFT = true;
		break;
		case 18:
			__ONALT = true;
		break;
		default:
			var keyoption = 0, keychar = tlc(String.fromCharCode(keycode));
			if (__ONCTRL)
			{
				keyoption = keyoption | CTRLKEY;
			}
			if (__ONSHIFT)
			{
				keyoption = keyoption | SHIFTKEY;
			}
			if (__ONALT)
			{
				keyoption = keyoption | ALTKEY;
			}

			if (keyoption > 0)
			{
				if (!Lang.isUndefined(__KEYSTOCK[keyoption]) && Lang.isFunction(__KEYSTOCK[keyoption][keychar]))
				{
					Event.preventDefault(e);
					__KEYSTOCK[keyoption][keychar](e);
				}
			}
	
	}
}

function restore_keys(e)
{
	var keycode = e.keyCode ? e.keyCode : e.which;
	switch (keycode)
	{
		case 17:
			__ONCTRL = false;
		break;
		case 16:
			__ONSHIFT = false;
		break;
		case 18:
			__ONALT = false;
		break;
	}
}

function faq_visibility(faqid)
{
	var more = Dom.get('faq_question_all_' + faqid), less = Dom.get('faq_answer_' + faqid);
	var moretext = more.innerHTML, lesstext = less.innerHTML;
	
	less.innerHTML = moretext;
	more.innerHTML = lesstext;
}
