sys = {};
sys.message = function (text) {
	var sm = new Ext.QuickTip({
		title: 'Mensaje',
		html: text,
		padding: 10,
		dismissDelay: 3000
	});
	sm.showAt([Ext.getBody().getWidth() - 300,0]);	
};
sys.error = function (text) {
	var sm = new Ext.QuickTip({
		title: 'Error',
		html: '<span class="c-red">'+text+'</span>',
		padding: 10,
		dismissDelay: 3000
	});
	sm.showAt([Ext.getBody().getWidth() - 300,0]);	
};
$(document).ready(function () {
	//sys.message('Bienvenido al sistema');
});

$ajaxHistory = [];
function $goBack() {
	if ($ajaxHistory.length > 0) $ajaxHistory.pop(); 
	if ($ajaxHistory.length > 0) {
		var p = $ajaxHistory.pop();
		$.post(p.url, p.params, function (data) {
			$('#'+p.content).html(data);
			$regBack(p.url, p.params, p.content);
		});
	}
};
function $reload() {
	if ($ajaxHistory.length > 0) {
		var p = $ajaxHistory[$ajaxHistory.length-1];
		$.post(p.url, p.params, function (data) {
			$('#'+p.content).html(data);
		});
	}
};
function $regBack(url, params, content) {
	var p = {'url': url, 'params': params, 'content': content};
	$ajaxHistory.push(p);
};
sys.printHelper = Ext.extend(Ext.util.Observable, {
    constructor: function(config){
		this.printFrame = null;
		if(Ext.isOpera) {
			this.printElementName = "DXOperaPrinter";
			this.printElement = null;
			//this.mergeProperties(dx_XROperaPrintTrick);
		}
        //this.addEvents({
        //    "fired" : true,
        //    "quit" : true
        //});

        // Copy configured listeners into *this* object so that the base class's
        // constructor will add them.
        //this.listeners = config.listeners;

        // Call our superclass constructor to complete construction process.
        sys.printHelper.superclass.constructor.call(this, config)
	},
	pdfExists: function(){
		if(!Ext.isObject(this.pdf))
		   this.pdf = this.existsIEPlugin() || this.existsFFPlugin();
		return this.pdf;
	},
	existsIEPlugin: function() {
		return this.createActiveXObject("PDF.PdfCtrl.5")
			|| this.createActiveXObject("PDF.PdfCtrl.6")
			|| this.createActiveXObject("AcroPDF.PDF.1");
	},
	createActiveXObject: function(classid) {
		try {
			return new ActiveXObject(classid);  
		} catch(ex) {
			return null;   
		}        
	},
	existsFFPlugin: function() {
		var plugins = navigator.mimeTypes["application/pdf"];
		var plugin = plugins != null ? plugins.enabledPlugin : null;   
		return ((plugin)&& 
				(plugin.description.indexOf("Adobe") != -1) &&
				((plugin.description.indexOf("Version") == -1 || parseFloat(plugin.description.split("Version")[1]) >= 6)));
	},
	getFrame: function() {
		this.ensurePrintFrame();
		return this.printFrame;
	},
	getFrameRecreated: function() {
		if(this.printFrame != null) {
			document.body.removeChild(this.printFrame.frameElement);
			this.printFrame = null;
		}
		return this.getFrame();
	},
	mergeProperties: function(properties) {
		for(var name in properties){
			this[name] = properties[name];
		}
	},
	print: function(result, className) {
		this.ensurePrintElement(className);
		this.fillPrintElement(result);
		//alert(this.printFrame.document.readyState);
		if(Ext.isIE && this.printFrame.document.readyState != "complete") {
			var func = function(printHelper) {
				return function() { if(this.readyState == "complete") printHelper.printCore(); };
			};
			this.printFrame.document.onreadystatechange = func(this);
		} else
			this.printCore();
	},
	printCore: function() {
		//alert(this.printFrame.document.readyState);
		if(this.printFrame != null) {
			var style;
			if(Ext.isIE7 || Ext.IE8) { // __aspxBrowserVersion >= 7) {  
				style = Ext.getDom("DXRPrintHideContent");
				if(style) style.styleSheet.disabled = false;
			}
			this.printFrame.focus();
			this.printFrame.focus();
			this.printFrame.focus();
			this.printFrame.focus();
			this.printFrame.focus();
			this.printFrame.focus();
			this.printFrame.print();
			if((Ext.isIE7 || Ext.IE8) && style)  // __aspxBrowserVersion >= 7) {
				style.styleSheet.disabled = true;
		}
	},
	fillPrintElement: function(content) {
		var printDocument = this.printFrame.document;
		printDocument.open("text/html", "replace");
		//printDocument.open("application/pdf", "replace");
		printDocument.write(content);
		printDocument.close();
	}, 
	ensurePrintElement: function(className) {
		this.ensurePrintFrame();
	},
	ensurePrintFrame: function() {
		if(this.printFrame == null) {
			this.printFrame = window.frames[this.createFrameElement("DXPrinter").id];
		}
	}, 
	createFrameElement: function(name) {
		var f = document.createElement("iframe");
		f.frameBorder = "0";
		f.style.overflow = "hidden";
		var frameSize = Ext.isSafari ? "1px" : "500px"; 
		f.style.width = frameSize;
		f.style.height = frameSize;
		f.name = name;
		f.id = name;
		document.body.appendChild(f);
		return f;
	}
});
