﻿function $(el){
	if (!el) return null;
	if (el.htmlElement) return Garbage.collect(el);
	if (typeof(document.getElementById(el))=="object") return document.getElementById(el);
	var type = $type(el);
	if (type == 'string'){
		el = document.getElementById(el);
		type = (el) ? 'element' : false;
	}
	if (type != 'element') return null;
	if (el.htmlElement) return Garbage.collect(el);
	if (['object', 'embed'].contains(el.tagName.toLowerCase())) return el;
	$extend(el, Element.prototype);
	el.htmlElement = function(){};
	return Garbage.collect(el);
};

var $extend = function(){
	var args = arguments;
	if (!args[1]) args = [this, args[0]];
	for (var property in args[1]) args[0][property] = args[1][property];
	return args[0];
};

function $type(obj){
	if (!$defined(obj)) return false;
	if (obj.htmlElement) return 'element';
	var type = typeof obj;
	if (type == 'object' && obj.nodeName){
		switch(obj.nodeType){
			case 1: return 'element';
			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
		}
	}
	if (type == 'object' || type == 'function'){
		switch(obj.constructor){
			case Array: return 'array';
			case RegExp: return 'regexp';
			case Class: return 'class';
		}
		if (typeof obj.length == 'number'){
			if (obj.item) return 'collection';
			if (obj.callee) return 'arguments';
		}
	}
	return type;
};

var Cookie ={
//    key:'',
//    duration:0,
//    value:'',
//    
//    read:function(){
//        var arr = document.cookie.match(new RegExp("(^| )"+key+"=([^;]*)(;|$)"));
//        if(arr != null) 
//            return decodeURIComponent(arr[2]);
//        return "";
//    },
//    
//    write:function(value){
//        var d = new Date();
//        d.setTime(d.getTime()+this.duration);
//        document.cookie = this.key + "=" + encodeURI(value)
//        + "; domain=.www.hqew.com"
//        + "; path=" + "/"
//        + "; expires=" + d.toGMTString();
//    }
}

Cookie.write = function(key, value, duration){
	 var d = new Date();
    d.setTime(d.getTime()+1000*60*60*24*30);
    document.cookie = key + "=" + encodeURI(value)
//    + "; domain=.www.hqew.com"
//    + "; path=" + "/"
    + "; expires=" + d.toGMTString();
};

Cookie.read = function(key){
	var arr = document.cookie.match(new RegExp("(^| )"+key+"=([^;]*)(;|$)"));
    if(arr != null) 
        return decodeURIComponent(arr[2]);
    return "";
};
