YAHOO.namespace("gs.tools");

YAHOO.gs.IE_QUIRKS = (YAHOO.env.ua.ie && document.compatMode == "BackCompat");
YAHOO.gs.IE_SYNC = (YAHOO.env.ua.ie == 6 || (YAHOO.env.ua.ie == 7 && YAHOO.gs.IE_QUIRKS)); 
YAHOO.gs.BUSY_CLASSNAME = "gs-busy"; 

YAHOO.gs.tools.getElementWidth = function(el){
	if(!YAHOO.lang.isNumber(el.innerWidth)){
		if(document.compatMode.toLowerCase() == "css1compat") return el.clientWidth;
		else return undefined;
	}else return window.innerWidth;
}
YAHOO.gs.tools.getElementHeight = function(el){
	if(!YAHOO.lang.isNumber(el.innerHeight)){
		if(document.compatMode.toLowerCase() == "css1compat") return el.clientHeight;
		else return undefined;
	}else return window.innerHeight;
}

YAHOO.gs.tools.parseJsonString = function(str){
	try{
		if(YAHOO.env.ua.opera < 1){
			var resp = YAHOO.lang.JSON.parse(str);
		}else{
			var resp = eval("("+str+")");
		}
	}catch(e){
		var resp = { error:true, message:[e] };
	}
	return resp;
}

YAHOO.gs.tools._defaultMessagePanel = null;
YAHOO.gs.tools.getDefaultMessagePanel = function(newInstance){
	if(YAHOO.lang.isUndefined(YAHOO.gs.widget.MessagePanel)) return null;
	
	if(!(YAHOO.gs.tools._defaultMessagePanel instanceof YAHOO.gs.widget.MessagePanel) || newInstance){
		var key = YAHOO.util.Dom.generateId(null,"message_panel_");
		var messagePanel = new YAHOO.gs.widget.MessagePanel(key, { 
			constraintoviewport: true,
			//fixedcenter: true,
			effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration: 0.5},
			width: "300px",
			//underlay:"none",
			draggable:true,
			underlay:"shadow",
			close:true,
			modal:true,
			visible:false,
			zindex: 9999
		});	
		messagePanel.setHeader("&nbsp;");
		messagePanel.setBody("&nbsp;");
		messagePanel.render(document.body);
		YAHOO.gs.tools._defaultMessagePanel = messagePanel;
	}
	
	return YAHOO.gs.tools._defaultMessagePanel;
}

YAHOO.gs.tools._defaultConfirmDialog = null;
YAHOO.gs.tools.getDefaultConfirmDialog = function(newInstance){
	if(YAHOO.lang.isUndefined(YAHOO.gs.widget.ConfirmDialog)) return null;
	
	if(!(YAHOO.gs.tools._defaultConfirmDialog instanceof YAHOO.gs.widget.ConfirmDialog) || newInstance){
		var key = YAHOO.util.Dom.generateId(null,"confirm_dialog_");
		var confirmDialog = new YAHOO.gs.widget.ConfirmDialog(key, { 
			constraintoviewport: true,
			//fixedcenter: true,
			effect:{effect:YAHOO.widget.ContainerEffect.FADE, duration: 0.5},
			width: "300px",
			//underlay:"none",
			draggable:true,
			underlay:"shadow",
			close:true,
			modal:true,
			visible:false,
			zindex: 9990
		});	
		confirmDialog.setHeader("&nbsp;");
		confirmDialog.setBody("&nbsp;");
		confirmDialog.render(document.body);
		YAHOO.gs.tools._defaultConfirmDialog = confirmDialog;
	}
	
	return YAHOO.gs.tools._defaultConfirmDialog;
}

YAHOO.gs.tools.alertObject = function(obj,rtn){
	if(!YAHOO.lang.isObject(obj)) return obj;
	var a = [];
	for(var iter in obj){
		var val = YAHOO.gs.tools.alertObject(obj[iter],true);
		a.push(iter+"="+((YAHOO.lang.isArray(val)) ? val.join(", ") : val));
	}
	if(rtn === true) return a;
	alert(a.join("\n"));
}


