//LOAD EVENTS

var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}


addEvent(window,'unload',EventCache.flush);

function removeElementById(object_id, opac) {
		var passed = parseInt(opac);
		var newOpac = parseInt(passed-10);
		if ( newOpac > 0 ) {
			$(object_id).style.opacity = '.'+newOpac;
			$(object_id).style.filter = "alpha(opacity:"+newOpac+")";
			opacityID = window.setTimeout("removeElementById('"+object_id+"', '"+newOpac+"')",20);
		} else { 
			$(object_id).parentNode.removeChild($(object_id));
		}
}
	
function print_r(input, _indent)
{
	var indent = (typeof(_indent)=='string')?_indent+'    ':'    ';
	var paren_indent = (typeof(_indent)=='string')?_indent+'  ':'';
	
	if ( typeof(input) == 'string' ) {
		var output = "'"+ input +"'\n"
	} else if ( typeof(input) == 'boolean' ) {
		var output = (input?'true':'false') +"\n"
	} else if ( typeof(input) == 'number' ) {
		var output = (input)+"\n"
	} else if ( typeof(input) == 'object' ) {
		var output = ((input.reverse)?'Array':'Object') +"\n"
		output += paren_indent + "(\n";
	for ( var i in input ) {
		output += indent + "["+ i +"] => "+ print_r(input[i],indent)
	}
		output += paren_indent + ")\n"
	}
	return output
};

function formSubmit(name) {
	var obj = eval("document."+name);
	var onsubmit = obj.onsubmit();
    if (onsubmit) {
		obj.submit();	
	}
}

function  is_numeric( mixed_var ) {
    return !isNaN( mixed_var );
};

function count( mixed_var, mode ) {

    var key, cnt = 0;
 
    if( mode == 'COUNT_RECURSIVE' ) mode = 1;
    if( mode != 1 ) mode = 0;
 
    for (key in mixed_var){
        cnt++;
        if( mode==1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object) ){
            cnt += count(mixed_var[key], 1);
        }
    }
 
    return cnt;
}

function serialize(_obj) {
   var type =  typeof(_obj);
   if(parseFloat(_obj)) { type = "number"; }
   //alert(type);
   switch(type) {
		case "number":
			if (isNaN(_obj)){
                return false;
            } else{
                return (Math.floor(_obj) == _obj ? "i" : "d") + ":" + _obj + ";";
            }
		break;
		case "string":
				return "s:" + _obj.length + ":\"" + _obj + "\";";
		break;
		case "boolen":
				return "b:" + (_obj ? "1" : "0") + ";";
		break;
		case "object":
			if(_obj == null) { return "N;"; }
			_ser = "a:" + count(_obj) + ":{";
			for(i in _obj) {
				_ser += serialize(i)+serialize(_obj[i]);
			}
			_ser += "}";
			return _ser;
		break;
		case "undefined":
            return "N;";
		break;
   }
};

function inArray(needle, haystack, strict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
 
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}