(function(){
  var Mono = window.Mono = window.$ = function (selector , contenxt)
  {
	  new Mono.fn.init( selector, context );
  };
  
  Mono.fn = Mono.prototype = {
	  
  };
		  
  var userAgent = navigator.userAgent.toLowerCase();
  
  Mono.browser = {
	  version: (userAgent.match( /.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [])[1],
	  safari: /webkit/.test( userAgent ),
	  opera: /opera/.test( userAgent ),
	  msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
	  mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
  };
  
  Mono.Css = {
	Add:function (selector , rules ,style) {
		if(!(document.getElementById('MonoMagicCss'))) {
			var sheets = document.createElement('STYLE');
			sheets.id = "MonoMagicCss";
			document.getElementsByTagName("head")[0].appendChild(sheets);
			sheets = document.styleSheets[(document.styleSheets.length-1)];
		}
		else
			var sheets = style;
		index = document.styleSheets.length ? (document.styleSheets.length-1) : 0;
		sheets = document.styleSheets[index];
			
		if(Mono.browser.msie) {
			RuleIndex = sheets.rules.length;
			sheets.addRule(selector, rules , RuleIndex);
		}
		else {
			RuleIndex = sheets.cssRules.length;
			sheets.insertRule(selector + "{"+rules+"}", RuleIndex);		
		}	
	}
  }
  
  Mono.Event = {
	ready:function(Fn)
	{
		Mono.Event.addEvent(window, "load", Fn)
	},
	addEvent:function(elm, evType, fn, useCapture)
	{
		if (elm.addEventListener)
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} 
		else if (elm.attachEvent)
		{
			var r = elm.attachEvent("on"+evType, fn);
			return r;
		} 
		else
			return false;
	}
  }
  
  Mono.XML = {
	Request:null,
	loadFile:function(File)
	{
		if(Mono.XML.Request == null)
		{
			if (document.implementation && document.implementation.createDocument)
				Mono.XML.Request = document.implementation.createDocument("", "", null);
			else if (window.ActiveXObject)
				Mono.XML.Request = new ActiveXObject("Microsoft.XMLDOM");
			else
				Mono.XML.Request =  null;
		}
		Mono.XML.Request.load(File);
	},
	ready:function(fn)
	{
		if (window.ActiveXObject)
		{
			Mono.XML.Request.onreadystatechange = function () {
				if (Mono.XML.Request.readyState == 4)
					fn();
			};
		}
		else
			Mono.XML.Request.onload =  fn;
	}
  }

})();
