	function trim(str){
		s = str.replace(/^(\s)*/, '');
		s = s.replace(/(\s)*$/, '');
		return s;
	}
	
	function implode(im,ar){
		return ar.join(im);
	}
	
	function explode(b, s){
   		return s.split(b);
	}
	
	function in_array(needle, haystack, strict) { 
		var found = false, key, strict = !!strict; 
		for (key in haystack) {
			if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
				found = true;
				break;
			}
		}
		return found;
	}	
	
	function file_exists (url) {        
		var req = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();  
		if (!req) throw new Error('XMLHttpRequest Destegi Yok');  
		
		req.open('HEAD', url, false);  
		req.send(null);  
		if (req.status == 200){  
			return true;  
		}  
		
		return false;  
	}
	
	function time() {
    	return Math.round(new Date().getTime()/1000);
	}
	
	function date ( format, timestamp ) {
		var a, tal=[], jsdate=(
			(typeof(timestamp) == 'undefined') ? new Date() : // Not provided
			(typeof(timestamp) == 'number') ? new Date(timestamp*1000) : // UNIX timestamp
			new Date(timestamp) // Javascript Date()
		);
		var pad = function(n, c){
			if( (n = n + "").length < c ) {
				return new Array(++c - n.length).join("0") + n;
			} else {
				return n;
			}
		};
		var ret = '';
		var txt_weekdays = ["Sunday","Monday","Tuesday","Wednesday",
			"Thursday","Friday","Saturday"];
		var txt_ordin = {1:"st",2:"nd",3:"rd",21:"st",22:"nd",23:"rd",31:"st"};
		var txt_months =  ["", "January", "February", "March", "April",
			"May", "June", "July", "August", "September", "October", "November",
			"December"];
	
		var f = {
			// Day
				d: function(){
					return pad(f.j(), 2);
				},
				D: function(){
					var t = f.l();
					return t.substr(0,3);
				},
				j: function(){
					return jsdate.getDate();
				},
				l: function(){
					return txt_weekdays[f.w()];
				},
				N: function(){
					return f.w() + 1;
				},
				S: function(){
					return txt_ordin[f.j()] ? txt_ordin[f.j()] : 'th';
				},
				w: function(){
					return jsdate.getDay();
				},
				z: function(){
					return (jsdate - new Date(jsdate.getFullYear() + "/1/1")) / 864e5 >> 0;
				},
	
			// Week
				W: function(){
					var a = f.z(), b = 364 + f.L() - a;
					var nd2, nd = (new Date(jsdate.getFullYear() + "/1/1").getDay() || 7) - 1;
	
					if(b <= 2 && ((jsdate.getDay() || 7) - 1) <= 2 - b){
						return 1;
					} else{
	
						if(a <= 2 && nd >= 4 && a >= (6 - nd)){
							nd2 = new Date(jsdate.getFullYear() - 1 + "/12/31");
							return date("W", Math.round(nd2.getTime()/1000));
						} else{
							return (1 + (nd <= 3 ? ((a + nd) / 7) : (a - (7 - nd)) / 7) >> 0);
						}
					}
				},
	
			// Month
				F: function(){
					return txt_months[f.n()];
				},
				m: function(){
					return pad(f.n(), 2);
				},
				M: function(){
					var t;
					t = f.F(); return t.substr(0,3);
				},
				n: function(){
					return jsdate.getMonth() + 1;
				},
				t: function(){
					var n;
					if( (n = jsdate.getMonth() + 1) == 2 ){
						return 28 + f.L();
					} else{
						if( n & 1 && n < 8 || !(n & 1) && n > 7 ){
							return 31;
						} else{
							return 30;
						}
					}
				},
	
			// Year
				L: function(){
					var y = f.Y();
					return (!(y & 3) && (y % 1e2 || !(y % 4e2))) ? 1 : 0;
				},
				o: function(){
					if (f.n() === 12 && f.W() === 1) {
						return jsdate.getFullYear()+1;
					}
					if (f.n() === 1 && f.W() >= 52) {
						return jsdate.getFullYear()-1;
					}
					return jsdate.getFullYear();
				},
				Y: function(){
					return jsdate.getFullYear();
				},
				y: function(){
					return (jsdate.getFullYear() + "").slice(2);
				},
	
			// Time
				a: function(){
					return jsdate.getHours() > 11 ? "pm" : "am";
				},
				A: function(){
					return f.a().toUpperCase();
				},
				B: function(){
					// peter paul koch:
					var off = (jsdate.getTimezoneOffset() + 60)*60;
					var theSeconds = (jsdate.getHours() * 3600) +
									 (jsdate.getMinutes() * 60) +
									  jsdate.getSeconds() + off;
					var beat = Math.floor(theSeconds/86.4);
					if (beat > 1000) beat -= 1000;
					if (beat < 0) beat += 1000;
					if ((String(beat)).length == 1) beat = "00"+beat;
					if ((String(beat)).length == 2) beat = "0"+beat;
					return beat;
				},
				g: function(){
					return jsdate.getHours() % 12 || 12;
				},
				G: function(){
					return jsdate.getHours();
				},
				h: function(){
					return pad(f.g(), 2);
				},
				H: function(){
					return pad(jsdate.getHours(), 2);
				},
				i: function(){
					return pad(jsdate.getMinutes(), 2);
				},
				s: function(){
					return pad(jsdate.getSeconds(), 2);
				},
				u: function(){
					return pad(jsdate.getMilliseconds()*1000, 6);
				},
	
			// Timezone
				e: function () {
					var abbr='', i=0;
					if (this.php_js && this.php_js.default_timezone) {
						return this.php_js.default_timezone;
					}
					if (!tal.length) {
						tal = timezone_abbreviations_list();
					}
					for (abbr in tal) {
						for (i=0; i < tal[abbr].length; i++) {
							if (tal[abbr][i].offset === -jsdate.getTimezoneOffset()*60) {
								return tal[abbr][i].timezone_id;
							}
						}
					}
					return 'UTC';
				},
				I: function(){
					var DST = (new Date(jsdate.getFullYear(),6,1,0,0,0));
					DST = DST.getHours()-DST.getUTCHours();
					var ref = jsdate.getHours()-jsdate.getUTCHours();
					return ref != DST ? 1 : 0;
				},
				O: function(){
				   var t = pad(Math.abs(jsdate.getTimezoneOffset()/60*100), 4);
				   if (jsdate.getTimezoneOffset() > 0) t = "-" + t; else t = "+" + t;
				   return t;
				},
				P: function(){
					var O = f.O();
					return (O.substr(0, 3) + ":" + O.substr(3, 2));
				},
				T: function () {
					var abbr='', i=0;
					if (!tal.length) {
						tal = timezone_abbreviations_list();
					}
					if (this.php_js && this.php_js.default_timezone) {
						for (abbr in tal) {
							for (i=0; i < tal[abbr].length; i++) {
								if (tal[abbr][i].timezone_id === this.php_js.default_timezone) {
									return abbr.toUpperCase();
								}
							}
						}
					}
					for (abbr in tal) {
						for (i=0; i < tal[abbr].length; i++) {
							if (tal[abbr][i].offset === -jsdate.getTimezoneOffset()*60) {
								return abbr.toUpperCase();
							}
						}
					}
					return 'UTC';
				},
				Z: function(){
				   var t = -jsdate.getTimezoneOffset()*60;
				   return t;
				},
	
			// Full Date/Time
				c: function(){
					return f.Y() + "-" + f.m() + "-" + f.d() + "T" + f.h() + ":" + f.i() + ":" + f.s() + f.P();
				},
				r: function(){
					return f.D()+', '+f.d()+' '+f.M()+' '+f.Y()+' '+f.H()+':'+f.i()+':'+f.s()+' '+f.O();
				},
				U: function(){
					return Math.round(jsdate.getTime()/1000);
				}
		};
	
		return format.replace(/[\\]?([a-zA-Z])/g, function(t, s){
			if( t!=s ){
				// escaped
				ret = s;
			} else if( f[s] ){
				// a date function exists
				ret = f[s]();
			} else{
				// nothing special
				ret = s;
			}
	
			return ret;
		});
	}
	
	function addslashes(str){
		return (str+'').replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
	}


