/* ------------------------
   common known variables 
   (like constants)
   ------------------------ */

var sAjaxLoaderSrc = '/totoya/cache/core/clib/admin/framework/skin/default/media/ajaxloader.gif';
var sAjaxLoaderImg = '<img src="'+sAjaxLoaderSrc+'">';
var Dom = YAHOO.util.Dom,
    Event = YAHOO.util.Event;
/* ------------------------
    onLoad-Handling
   ------------------------ */

var todoOnLoad = new Array();

function doOnLoad() {
    for(i=0; i<todoOnLoad.length; i++) {
        eval(todoOnLoad[i]);
    }
}
function addOnLoad(cmd) {
    todoOnLoad[todoOnLoad.length] = cmd;
}

window.onload = doOnLoad;


/* ------------------------
    onResize-Handling
   ------------------------ */

var todoOnResize = new Array();

function doOnResize() {
    for(i=0; i<todoOnResize.length; i++) {
        eval(todoOnResize[i]);
    }
}
function addOnResize(cmd) {
    todoOnResize[todoOnResize.length] = cmd;
}
window.onresize = doOnResize;


/* ------------------------
    standard functions lib
   ------------------------ */

function log(o) {
	if(typeof console == "object"){
		if(typeof console.log == "function") {
			top.console.log(o);
		}
	}
}

function _(id) {
    return document.getElementById(id);
}

function removeAllChildNodes(obj) {
	while(obj.firstChild) {
		obj.removeChild(obj.firstChild);
	}
}

// AJAX HANDLING
function convert2PostData(obj, aOuterElements) {
	var ret="";
	var seperator="";
	for(var i in obj) {
		if(typeof obj[i] == "object" || typeof obj[i] == "array" ) {
			if(typeof aOuterElements != "array" && typeof aOuterElements != "object") {
				aOuterElements = new Array();
			}
			aOuterElements.push(i);
			ret += convert2PostData(obj[i], aOuterElements);
			aOuterElements.pop();
		} else {
			if(typeof aOuterElements == "array" || typeof aOuterElements == "object") {
				seperator="&";
				ret += seperator;
				for(var k in aOuterElements) {
					 if(k==0) {
						ret += aOuterElements[0];
					 }
					 else {
					 	ret += "["+aOuterElements[k]+"]";
					 }
				}
				ret += "["+i+"]";
			} 
			else {
				ret += seperator;
				ret += i;
			}
			ret += '=' + encodeURIComponent(obj[i]);
			seperator="&";
		}
	}
	delete aOuterElements;
	return ret;
}

function yuiAjaxRequest(sClass, sFunction, oData, oCallback) {
	var sUrl = '/ajax/' + sClass + '/' + sFunction;
	return YAHOO.util.Connect.asyncRequest('POST', sUrl, oCallback, convert2PostData(oData));
}

function parseAjaxResponse(o) {
	var data = eval('(' + o.responseText + ')');
	if(data.sFlag != "Error"){
		for(i in data.aDomHtml) {
			//log("changing innerHTML from "+data.aDomHtml[i].sId);
			_(data.aDomHtml[i].sId).innerHTML = data.aDomHtml[i].sHtml;
		}
		eval(data.sScripts);
	}else{
		alert(data.mData);
		return false;
	}
	return data.mData;
}

// CALLBACK HANDLING
function executeCallback(oCallbackObject) {
	var ret;
	if(typeof oCallbackObject == "object" && oCallbackObject != null) { 
		var oTempStore = {
			fFunction:	oCallbackObject.fFunction,
			oScope:		oCallbackObject.oScope,
			mParam:		oCallbackObject.mParam
		};
		oCallbackObject = null;
		delete oCallbackObject;
		if(typeof oTempStore.fFunction == "function") {
			if(oTempStore.oScope) {
				ret = oTempStore.fFunction.apply(oTempStore.oScope, [oTempStore.mParam]);
			}
			else {
				ret = oTempStore.fFunction(oTempStore.mParam);
			}
		}
	}
	else if(typeof oCallbackObject == "function") {
		ret = oCallbackObject();
	}
	else {
		ret = false;
	}
	return ret;
}


function cloneObject(oObj) {
	Object.prototype.clone = function() {
		var tmp = this.constructor();
		for(var i in this)  {
			if(typeof this[i] == "object" && this[i] != null) {
				tmp[i] = this[i].clone();
			}
			else {
		 		tmp[i] = this[i];
		 	}
		}
		return tmp;
	};
	var tmp = oObj.clone();
	delete Object.prototype.clone;
	return tmp;
}

















