function StringBuffer(){this.__strings__ = new Array;}
StringBuffer.prototype.append = function(str){this.__strings__.push(str);return this;}
StringBuffer.prototype.add = function(str){this.__strings__.push(str);return this;}
StringBuffer.prototype.toString = function(){return this.__strings__.join("");}

var chr = {
	sq : '\''
}
function findPosX(obj){
var curleft = 0;
if(obj.offsetParent)while(1){curleft += obj.offsetLeft;if(!obj.offsetParent)break;obj = obj.offsetParent;}else if(obj.x)curleft += obj.x;
return curleft;
}
function findPosY(obj){
var curtop = 0;
if(obj.offsetParent)while(1){curtop += obj.offsetTop;if(!obj.offsetParent)break;obj = obj.offsetParent;}else if(obj.y)curtop += obj.y;
return curtop;
}
/**/
var paramSep = '#-#';
var newSep = '#_#';

var Loader = { 
loaded: false,
addOnLoad: function(fn) {if (this.loaded) fn();else {var oldonload = (window.onload) ? window.onload : function () {};window.onload = function () { oldonload(); fn(); };}
},
init: function() {this.loaded = true;}
};
Loader.addOnLoad(Loader.init);
function delayScript(func){window.setTimeout(func, 1500);}

var Vector = Class.create();
Vector.prototype = {
initialize : function(){this.array = new Array;},
add : function(obj){this.array[this.array.length] = obj;},
get : function(index){return this.array[index];},
remove : function(obj){
for(i=0; i<this.array.length; i++){var tmp = this.array[i];if(tmp != null){if(tmp == obj){this.array[i] = null;return;}}}
},
size : function(){return this.array.length;},
clear : function(){this.array = new Array;},
getAsArray : function(){return this.array;},
removeByIndex : function(i){this.array[i] = null;}
}
function toggleEffect(main_container_str, icon_container_str){
var main_container = $(main_container_str);var icon_container = $(icon_container_str);
if(main_container.getStyle('display') == 'none'){
$(main_container_str).setStyle({display:'block'});
icon_container.setStyle({'background':'url(http://btcool.simplecdn.net/images/expander_up.gif) no-repeat'});
}else{
$(main_container_str).setStyle({display:'none'});
icon_container.setStyle({'background':'url(http://btcool.simplecdn.net/images/expander_down.gif) no-repeat'});
}
return false;
}
function locateTo(url){location.href = url;}
function AYscrollTo(element) {
var elem = $(element);
var pos = elem.cumulativeOffset();
window.scrollTo(pos[0], pos[1]);
}
var Client = { 
viewportWidth: function() {return self.innerWidth || (document.documentElement.clientWidth || document.body.clientWidth);},
viewportHeight: function() {return self.innerHeight || (document.documentElement.clientHeight || document.body.clientHeight);},
viewportSize: function() {return { width: this.viewportWidth(), height: this.viewportHeight() };}
};
String.prototype.stripSpaces = function( ){ return this.replace( /\s/g, "" ); };
function replaceAll (_str,_strtorep, _strberep ){
var st = _str;if (_strtorep.length == 0)return st;var idx = st.indexOf(_strtorep);
while (idx >= 0){st = st.substring(0,idx) + _strberep + st.substr(idx + _strtorep.length);idx = st.indexOf(_strtorep);}
return st;
}
function htmlspecialchars(text){
if(typeof(text)=='undefined'||!text.toString){return'';}
if(text===false){return'0';}else if(text===true){return'1';}
return text.toString().replace(/&/g,'&amp;').replace(/"/g,'&quot;').replace(/'/g,'&#039;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\\/g, '&#92;').replace(/\//g,'&#47;');
}
function removeSpecChars(text){
if(typeof(text)=='undefined'||!text.toString){return'';}
if(text===false){return'0';}else if(text===true){return'1';}
return text.toString().replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/\\/g, '&#92;').replace(/\//g,'&#47;');
}
function specCharsToHtml(text){
if(typeof(text)=='undefined'||!text.toString){return'';}
return text.toString().replace(/&lt;/g, '<').replace(/&gt;/g,'>').replace(/&#92;/g,'\\').replace(/&#47;/g, '\/');
}
/**/
function selectOption(select_id, index){
var select = $(select_id);if(select != null || typeof(select) != 'undefined'){select.options[index].selected = 'selected';}
}
function selectOptionByValue(select_id, val){
var select = $(select_id);if(select != null || typeof(select) != 'undefined'){
for(var i = 0; i<select.options.length; i++){
if(select.options[i].value == val){select.options[i].selected = 'selected';}
}}}
function getValueOfIndex(select_id)
{
var select = $(select_id);
if(select == null || typeof(select) == 'undefined')return '0';
return select.options[select.selectedIndex].value;
}
/**/
function IsNumeric(sText){
var ValidChars = "0123456789.";var IsNumber=true;var Char;
for (i = 0; i < sText.length && IsNumber == true; i++){Char = sText.charAt(i);if (ValidChars.indexOf(Char) == -1){IsNumber = false;}}
return IsNumber;
}

var Runner = Class.create();
Runner.prototype = {
initialize : function(){this.last_func=0;this.func_list = new Vector();},
add : function(func_to_run){this.func_list.add(func_to_run);},
runAll : function(){
var len = this.func_list.size();
for(var i=this.last_func; i<len; i++){
var func = this.func_list.get(i);
if(func != null){
func();
}
}
}
}
var runner = new Runner();

/*click event connecter*/
function conClkEvt(_obj, _func, _caller, _args){
Event.observe(_obj, 'click', _func.bindAsEventListener(_caller));
}
function conMsUpEvt(_obj, _func, _caller, _args){
Event.observe(_obj, 'mouseup', _func.bindAsEventListener(_caller));
}
function conMsDownEvt(_obj, _func, _caller, _args){
Event.observe(_obj, 'mousedown', _func.bindAsEventListener(_caller));
}
function conMsMoveEvt(_obj, _func, _caller, _args){
Event.observe(_obj, 'mousemove', _func.bindAsEventListener(_caller));
}
/* AYJSLoader */
var TmpData = Class.create();
TmpData.prototype = {
	initialize : function(_data_name, _data){
		this.data_name = _data_name;
		this.data = _data;
		this.is_data_readed = false;
	},
	isReaded : function(){return this.is_data_readed;},
	getData : function(){this.is_data_readed = true;return this.data;},
	getName : function(){return this.data_name;}
}
var ClsOwner = Class.create();
ClsOwner.prototype = {
	initialize : function(_owner_id){
		this.owner_id = _owner_id;
		this.data_vector = new Vector();
	},
	add : function(_data_name, _data){this.data_vector.add(new TmpData(_data_name, _data));},
	getID : function(){return this.owner_id;},
	getData : function(_data_name){
		var len = this.data_vector.size();
		var activeObj;
		for(var i=0; i<len; i++){
			activeObj = this.data_vector.get(i);
			if(activeObj.getName() == _data_name){
				return activeObj.getData();
			}
		}
		return null;
	}
}
var GlobalDataHolder = Class.create();
GlobalDataHolder.prototype = {
	initialize : function(){
		this.owner_vector = new Vector();
	},
	add : function(_owner_id, _data_name, _data){var _tmp = this._getOwner(_owner_id);_tmp.add(_data_name, _data);},
	get : function(_owner_id, _data_name){return this.getData(_owner_id, _data_name);},
	getData : function(_owner_id, _data_name){
		var len = this.owner_vector.size();
		var activeObj;
		for(var i=0; i<len; i++){
			activeObj = this.owner_vector.get(i);
			if(activeObj.getID() == _owner_id){
				return activeObj.getData(_data_name);
			}
		}
		return null;
	},
	_getOwner : function(_owner_id){
		var len = this.owner_vector.size();
		var activeObj;
		for(var i=0; i<len; i++){
			activeObj = this.owner_vector.get(i);
			if(activeObj.getID() == _owner_id){
				return activeObj;
			}
		}
		var activeObj = new ClsOwner(_owner_id);
		this.owner_vector.add(activeObj);
		return activeObj;
	}
}
var globDH = new GlobalDataHolder();
var lzLod;
var AYJsLoader = Class.create();
AYJsLoader.prototype = {
	initialize : function(){
		this.base_src = "http://btcool.simplecdn.net/albumyapjs/";
		this.js_list = new Vector();
	},
	add : function(_js_name){this.js_list.add(_js_name);},
	_addToHead : function(_src){
		var headID = document.getElementsByTagName("head")[0];
		var newScript = document.createElement('script');
		newScript.type = 'text/javascript';
		newScript.src = _src;
		headID.appendChild(newScript);
	},
	getURL : function(_src){return this.base_src + _src;},
	loadAll : function(){
		var len = this.js_list.size();
		if(len == 0){return;}
		var activeSrc = null;
		for(var i=0; i<len; i++){
			activeSrc = this.js_list.get(i);
			if(activeSrc != null || activeSrc != ''){
				try{
					this._addToHead(this.getURL(activeSrc));
				}catch(e){}
			}
		}
	}
}
lzLod = new AYJsLoader();
function lazyLoadAll(){
window.setTimeout(lzLod.loadAll.bind(lzLod), 400);
}
runner.add(lazyLoadAll);
/**/
/* EventListener */
/* Genel bir event raiser, herhangi bir olayı ifade ediyor */
if(EventListenerBase == 'undefined' || EventListenerBase == null){
var EventListenerBase = Class.create();
EventListenerBase.prototype = {
	initialize : function(_parent_name){
		this.listeners = new Array();
		this.parent_name = _parent_name;
	},
	addListener : function(_callback, _caller){
		var arr = new Array;
		arr[0] = _callback;
		arr[1] = _caller;
		this.listeners.push(arr);
	},
	removeListener : function(_callback){
		for(var i = 0; i < this.listeners.length; i++){
			var callbackArr = this.listeners[i];
			if(callbackArr[0] == _callback){
				this.listeners[i] = null;
			}
		}
	},
	notifyListeners : function(event, data){
		var len = this.listeners.length;
		if(len == 0){
			return;
		}
		for(var j = 0; j < len; j++){
			var callbackArr = this.listeners[j];
			if(callbackArr != null){
				var callback = callbackArr[0];
				var caller = callbackArr[1];
				callback(event, data, caller);
			}
		}
	},
	debugListeners : function(){
		for(var i = 0; i < this.listeners.length; i++){
			var callbackArr = this.listeners[i];
			if(callbackArr != null){
				var callback = callbackArr[0];
				var caller = callbackArr[1];
				alert(callback.toString());
			}
		}
	}
}
}
/* global lock*/
var globLock = new EventListenerBase();
