$CW = {
	
	screenSize: function() {
		var w, h;
		w = document.documentElement.clientWidth;
		h = document.documentElement.clientHeight;
		return {w:w, h:h};
	},
	
	pageSize: function() {
		var w, h;
		w = ((document.body.clientWidth > document.body.offsetWidth) ? document.body.clientWidth : document.body.offsetWidth);
		h = ((document.body.clientHeight > document.body.offsetHeight) ? document.body.clientHeight : document.body.offsetHeight);
		return {w:w, h:h};
	},
	
	loadJs: function(loc) {
		var target = document.getElementsByTagName('head')[0];
		this.new_script = document.createElement("script");
		this.new_script.setAttribute('type', 'text/javascript');
		this.new_script.src = loc;
		target.appendChild(this.new_script);		
	},
	
	loadCss: function(loc) {
		var target = document.getElementsByTagName('head')[0];
		var new_style = document.createElement("link");
		new_style.setAttribute('rel', 'stylesheet');
		new_style.setAttribute('type', 'text/css');
		new_style.setAttribute('href', loc);
		target.appendChild(new_style);
	},
	
	//////DOM Methods////////

	_isCorrectDomWork: function() {
		var elem1 = document.createElement("div");
		var elem2 = document.createElement("input");
		elem2.type = "hidden";
		elem2.name = "testName";
		elem1.appendChild(elem2);
		if (elem1.innerHTML.indexOf("test") == -1) return false;
		else return true;
	},

	insertElement: function(par, params, where) {
		var newEl, parent;
		var i = 0;
		var names = new Array();
	
		if(par && typeof par == 'string' && _E(par))
			parent = _E(par);	
		else if (par && typeof par == 'object')
			parent = par;
		else	
			parent = document.body;	
		
		newEl = document.createElement(params.elTag);	
		if(params.elTag=='table') {
			newEl.tbody = document.createElement('tbody');
			newEl.appendChild(newEl.tbody);
			newEl.tr = document.createElement('tr');
			newEl.tbody.appendChild(newEl.tr);
		}
		if(params.elTag=='input') {
			var eltype = (params.elType) ? params.elType : '';
			var elname = (params.elName) ? params.elName : '';
			if (!this._isCorrectDomWork())
				newEl = document.createElement('<input type="'+eltype+'" name="'+elname+'" />');
			else {
				newEl = document.createElement(params.elTag);
				if (eltype != '') newEl.type = eltype;
				if (elname != '') newEl.name = elname;
			}	
		}

		switch(where)	{	
			case 'insert':
				parent.appendChild(newEl);				
				break;		
			case 'insertfirst':
				parent.insertBefore(newEl, parent.firstChild);
				break;				
			case 'replace':
				parent.parentNode.replaceChild(newEl, parent);
				break;
		}	
	
		for(names[i++] in params)
		for (var t=0;t<names.length;t++) {
			if (names[t] == 'elTag') continue;
			else if (names[t] == 'elClass') newEl.className = params[names[t]];
			else if (names[t] == 'elId') newEl.setAttribute('id', params[names[t]]);
			else if (names[t] == 'elStyles') newEl.setAttribute('style', params[names[t]]); //just for new browsers, setStyle is better
			else if (names[t] == 'elHref') newEl.href = params[names[t]];
			else if (names[t] == 'elSrc') newEl.setAttribute('src', params[names[t]]);
			else if (names[t] == 'elValue') newEl.setAttribute('value', params[names[t]]);
			else if (names[t] == 'elHtml') newEl.innerHTML = params[names[t]];
			else if (names[t] == 'elTitle') newEl.setAttribute('title', params[names[t]]);
		} 	
		return newEl;	
	},	
	
	removeElement: function(el) {
		if (typeof el == 'string') 
			var element = _E(el);
		else 
			var element = el;
			
		element.parentNode.removeChild(element);
	},
	
	getStyle: function(el, style) {
		var computedStyle = el.currentStyle || window.getComputedStyle(el, null);
		return computedStyle[style];
	},
	
	setStyle: function(el, params) {
		var i = 0;
		var styles = new Array();	
		
		for(styles[i++] in params)
		for (var t=0;t<styles.length;t++)
			el.style[styles[t]]=params[styles[t]];
	},
	
	//////COOKIE Methods////////
	
	writeCookie: function(text, name, age, path) {
		if (!age) age=60*60*24*365;
		if (!path) path="/";
		
		if (document.cookie) {
			document.cookie = name+"="+encodeURIComponent(text)+";max-age="+age+";path="+path;		
		} else {
			return false;
		}
	},
	
	readCookie: function(name) {
		var pos = document.cookie.indexOf(name+"=");
		if (pos != -1) {
			var start = pos+name.length+1;
			var ends = document.cookie.indexOf(";", start); 
			if (ends == -1) ends = document.cookie.length;
			var value = document.cookie.substring(start, ends); 
			value = decodeURIComponent (value);
			return value;
		} else {
			return false;
		}		
	} 

}

///// COMMON METHODS ////////
var _E = function(id) {
	var el = document.getElementById(id);
	if (el) 
		return el;
	else 
		return null;
}

var _V = function(el, val) {
	if (typeof el == 'string') 
		var element = this._E(el);
	else 
		var element = el;
	if (!element) 
		return null;
	if(val) 
		element.innerHTML = val;
	else 
		return element.innerHTML;	
}
