// coded by qeremy (qeremy@gmail.com), all rights reserved!

ua = navigator.userAgent.toLowerCase();
OP = ua.indexOf('opera') != -1;
IE = ua.indexOf('msie') != -1 && document.all && !OP;
SF = ua.indexOf('safari')!=-1;
FF = ua.indexOf('firefox')!=-1;

function $(e) {
	return document.getElementById(e);
}

function $$(es) {
	var a = [], i;
	for(i=0; i<es.length; i++)
		a.push(document.getElementById(es[i]));
	return a;
}

function $$$(x) {
	if(typeof x == 'object') return x;
	else if(typeof x == 'string') return $(x);
	return null;
}

function setDisable(x, y) {
	$$$(x).disabled = y;
}

function setCheck(x, y) {
	$$$(x).checked = y;
}

function setClass(x, v, cmd) {
	//$$$(x).className = v;
	var x = $$$(x);
	var cn = !x.className ? '' : ''+ x.className;
	if(!cmd) { // addClass
		if(!cn) x.className = v;
		else {
			var cn_ = cn.split(/\s+/), f = i = 0, l = cn_.length;
			for(i; i < l; ++i) {
				if(cn_[i] == v) {
					f = 1;
					break;
				}
			}
			if(!f) cn_.push(v);
			x.className = cn_.join(' ');
		}
	}
	else { // removeClass
		if(!cn || cn.indexOf(v) == -1) return;
		
		var cn_ = cn.split(/\s+/), i = 0, l = cn_.length;
		for(i; i < l; ++i) if(cn_[i] == v) cn_.splice(i--, 1);
		
		x.className = cn_.join(' ');
	}
}

function getBrowserLanguage(q) {
	var lang = (navigator.language ? navigator.language : navigator.userLanguage).substring(0,2);
	if(!q) return lang;
	else if(q) return lang == q;
	else return 'undefined';
}

function setStyle(x, a, v) {
	if(typeof x.push == 'function') {
		for(var i = 0; i < x.length; i++)
			$$$(x[i]).style[a] = v;
	}
	else
		$$$(x).style[a] = v;
}

function getStyle(x, a, v) {
	return $$$(x).style[a] == v;
}

function setHTML(x, s) {
	if(typeof x.push == 'function') {
		for(var i = 0; i < x.length; i++)
			$$$(x[i]).innerHTML = s || '';
	}
	else
		$$$(x).innerHTML = s || '';
}


function imagePreload() { // imagePreload('a.gif','b.gif')
	var args = imagePreload.arguments, imgPath = 'img/', i;
	document.imgs = new Array(args.length);
	for(i = 0; i < args.length; i++) {
		document.imgs[i] = new Image();
		document.imgs[i].src = imgPath + args[i];
	}
}

function isEmail(email) {
	return (/^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/).test(email);
}

function keepForm(warning, field) {
	alert(warning +'\t');
	if(field) field.focus();
	return false;
}

function redirect(t) {
	self.location = t;
}

// NS'de karmaşa oluyor ve çalışmıyor //tag verince çalışmıyor
function getElementsByClassName(pattern, tag, elm) {
	var className = new RegExp('(^|\\s)'+ pattern +'(\\s|$)', 'i'),
		 tag = tag || '*',
		 elm = elm || document,
		 tags = elm.getElementsByTagName(tag),
		 i = 0, cur, ret = [];
	while(i < tags.length) {
		cur = tags[i];
		if(className.test(cur.className))
			ret.push(cur);
		i++;
	}
	return ret;
}

function changeURL(select, which) {
	var search = window.location.search.substring(1), target;
	if(search != '') {
		var split = search.split('&');
		if(split != '') {
			var getVars = [];
			for(i = 0; i < split.length; i++)
				if(split[i].indexOf(which) == -1 && split[i].indexOf('start') == -1)
					getVars.push(split[i]);
			
			getVars = getVars.join('&');
			if(getVars != '')
				target = '?'+ getVars +'&'+ which +'='+ select.value;
		}
	}
	else
		target = '?'+ which +'='+ select.value;
	
	if(!target || typeof target == 'undefined') //debug
		target = '?'+ which +'='+ select.value;
	
	self.location = target;
}

function windowOpen(url, width, height, name, scrollbars, resizable) {
	name = name || 'null';
	scrollbars = scrollbars || 1;
	resizable = resizable || 1;
	width = width || 500;
	height = height || 500;
	var top = (screen.height / 2) - height / 2, left = (screen.width / 2) - width / 2, newWindow = window.open(url, name, 'status=1,scrollbars='+ scrollbars +',resizable='+ resizable +',width='+ width +',height='+ height +',top='+ top +',left='+ left);
	newWindow.focus();
}

function pregQuote(str) {
	// http://kevin.vanzonneveld.net
	// +   original by: booeyOH
	// +   improved by: Ates Goral (http://magnetiq.com)
	// +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   bugfixed by: Onno Marsman
	// *     example 1: preg_quote("$40");
	// *     returns 1: '\$40'
	// *     example 2: preg_quote("*RRRING* Hello?");
	// *     returns 2: '\*RRRING\* Hello\?'
	// *     example 3: preg_quote("\\.+*?[^]$(){}=!<>|:");
	// *     returns 3: '\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:'
	return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g, '\\$1');
}

function strTr(str, from, to) {
	if(typeof from === 'string')
		return str.replace(new RegExp(pregQuote(from), 'g'), to);
	else if(typeof from === 'object') {
		for(i in from)
			str = str.replace(new RegExp(pregQuote(i), 'g'), from[i]);
		return str;
	}
}

function isTR(s) {
	return (/[İıÖöÜüÇçĞğŞşÂâÛûÎî]/).test(s);
}

function fixTR(s) {
	var a = {'ı':'i', 'İ':'I', 'ö':'o', 'Ö':'O', 'ü':'u', 'Ü':'U', 'ç':'c', 'Ç':'C', 'ğ':'g', 'Ğ':'G', 'ş':'s', 'Ş':'S', 'â':'a', 'Â':'A', 'î':'i', 'Î':'I', 'û':'u', 'Û':'u'};
	return strTr(s, a);
}

function trim(s, r) {
	s = ''+ s; // string olmayınca hata verir
	if(!r)
		return s.replace(/^\s+/, '').replace(/\s+$/, '').replace(/\n{2,}/g, '\n\n');
	else {
		var r1 = new RegExp('^'+ r +'+');
		var r2 = new RegExp(r +'+$');
		return s.replace(r1, '').replace(r2, '');
	}
}

function desturDe(s) {
	return s.replace(/direkt/g, 'doğrudan')
		.replace(/(email|mail)/g, 'e-posta')
		.replace(/e[w]+/g, 'ev')   // veya /e(w+)/
		.replace(/fu[l]+/g, 'tam') // veya /fu(l+)/
		.replace(/vs\.(\s|)+\)/g, 'vs)')
		.replace(/vb\.(\s|)+\)/g, 'vb)')
		.replace(/acil([l]{3,})/g, 'acilll')
		.replace(/maximum|maksimum/g, 'en fazla').replace(/minimum/g, 'en az')
		.replace(/̇/g,'');
}

// FORM
var Form = function(field) {
	var Obj = new Object(); // new'den kurtulmak için
	Obj.field = field;
	Obj.trim = function() { // bazen trim'leri zincirin en sonunda kullan!
		this.field.value = trim(this.field.value.replace(/\s{1,}/g, ' ')); // veya / +/
		return this;
	};
	Obj.clean = function() {
		// çevir bakalım, güzel oldu :)
		this.field.value = this.field.value
		// .replace(/(\.|\?|!|,|:|;|=|%|&|#|'|")+/g, '$1') // iptal (düzgün çalışmıyor)
		.replace(/(\.|,|=|\\|\u0022|\u0027)+/g, '$1').replace(/\?+/g, '?').replace(/\*+/g, '*').replace(/!+/g, '!').replace(/#+/g, '#').replace(/&+/g, '&').replace(/%+/g, '%').replace(/:+/, ':').replace(/;+/, ';').replace(/\/+/, '/').replace(/<+/, '<').replace(/>+/, '>') // ... -> .
		.replace(/(\.|,)(.)/g, '$1 $2') // lorem.ipsum  -> lorem. ipsum
		.replace(/(.*?)\s(\.|,)/g, '$1$2') // lorem .ipsum -> lorem. ipsum
		.replace(/i̇/g, 'i'); // bu çıktı bir de
		this.field.value = desturDe(this.field.value);
		return this;
	};
	Obj.toLower = function() {
		this.field.value = this.field.value.replace(/I/g, 'ı').toLowerCase();
		return this;
	};
	Obj.toUpper = function() {
		this.field.value = this.field.value.replace(/i/g, 'İ').toUpperCase();
		return this;
	};
	Obj.ucFirst = function() {
		this.field.value = this.field.value.charAt(0).replace(/i/g, 'İ').toUpperCase() + this.field.value.substring(1).replace(/I/g, 'ı').toLowerCase();
		return this;
	};
	Obj.ucWords = function() {
		var a = this.field.value.split(/\s/), o = '', i;
		for(i in a) o += a[i].charAt(0).replace(/i/g, 'İ').toUpperCase() + a[i].substring(1).replace(/I/g, 'ı').toLowerCase() + ' ';
		o = trim(o);
		this.field.value = o;
		return this;
	};
	Obj.digit = function() {
		this.field.value = this.field.value.replace(/\s/g, '').replace(/[^0-9]/g, '');
		return this;
	};
	Obj.alpha = function() {
		this.field.value = this.field.value.replace(/[^a-zİıöüçğş\s]/gi, '');
		return this;
	};
	Obj.email = function() {
		this.field.value = this.field.value.toLowerCase().replace(/ı/g,'i').replace(/ö/g,'o').replace(/ü/g,'u').replace(/ç/g,'c').replace(/ğ/g,'g').replace(/ş/g,'s').replace(/[^a-z0-9@\._-]/g,'').replace(/@+/,'@');
		return this;
	};
	Obj.limitText = function(limit) {
		if(this.field.value.length > limit ) {
			// alert('En fazla '+ limit +' adedince karakter girebilirsiniz!\t');
			this.field.value = this.field.value.substring(0, limit);
		}
		return this;
	};
	return Obj;
};
// FORM end

// AJAX
AJAX_FILE = '/ajax/ajax.php';
NOT_SUPPORTED_BROWSER = 'Ajax nesnesi oluşturulamyor, lütfen daha gelişmiş bir tarayıcı kullanınız!\n';
LOADING_IMAGE = '<img src="img/loading.gif" align="absmiddle">';
var Ajax = {
	init: function() {
		if(window.ActiveXObject) {
			// 'axVers' içeriği değiştirince IE7 sorun çıkarıyor, hepsi kalsın!
			var axVers = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP.2.0', 'MSXML2.XMLHTTP.1.0', 'Microsoft.XMLHTTP'], validVers = null, i = -1;
			while(i < axVers.length) {
				i++;
				try {
					validVers = new ActiveXObject(axVers[i]);
					if(validVers !== null) break;
				} catch(e) {}
			}
			
			if(validVers !== null) return validVers;
		}
		
		if(typeof XMLHttpRequest != 'undefined') return new XMLHttpRequest();
		
		return false;
	},
	get: function(options) { // file, para, func, async
		if(!xhr) return exit(NOT_SUPPORTED_BROWSER);
		
		var file = options.file || AJAX_FILE;
		var para = (options.para === null) ? file : file +'?'+ options.para;
		xhr.onreadystatechange = options.func || function() {};
		xhr.open('GET', para, options.async || true);
		xhr.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2008 00:00:00 GMT');
		xhr.setRequestHeader('Connection', 'close');
		xhr.setRequestHeader('Ajax', 'true');
		xhr.send(null);
	},
	post: function(options) { // file, para, func, async
		if(!xhr) return exit(NOT_SUPPORTED_BROWSER);
		
		xhr.onreadystatechange = options.func || function() {};
		xhr.open('POST', options.file || AJAX_FILE, options.async || true);
		xhr.setRequestHeader('If-Modified-Since', 'Sat, 1 Jan 2008 00:00:00 GMT');
		xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
		xhr.setRequestHeader('Content-Length', options.para.length);
		xhr.setRequestHeader('Connection', 'close');
		xhr.setRequestHeader('Ajax', 'true');
		xhr.send(options.para);
	},
	loading: function(x, q) {
		//setHTML(x, ( q ? LOADING_IMAGE : ''));
		if(q) setStyle(x, 'visibility', 'visible');
		else setStyle(x, 'visibility', 'hidden');
	}
};
var xhr = Ajax.init();
// AJAX end