function bible(object, firstLetter) {
	if ( firstLetter == undefined ) firstLetter = '';
	var out = '';
	for ( var i in object ) {
		if ( firstLetter == '' || i.substr(0, 1) == firstLetter )
			out += i + ' = ' + object[i] + '\n';
	}
	if ( ( ta = document.getElementById('bible') ) == null ) {
		ta = document.createElement('textarea');
		ta.setAttribute('cols', 80);
		ta.setAttribute('rows', 25);
		ta.setAttribute('id', 'bible');
		document.body.appendChild(ta);
	}
	ta.value = out;
	//alert(out);
}



//fetchers
function _(id) { return document.getElementById(id); }
function __(id, father) { return father.getElementById(id); }



function site_parse_node(node, filter) {
	// define returning array
	var arr = new Array();
	var cnode = null;
	// define isText checker function
	var isText = function(node) {
    	return node.nodeType == 3 || node.nodeType == 4;
	}
	// loop through sub nodes
	for ( var i = 0; i < node.childNodes.length; i++ ) {
		cnode = node.childNodes[i];
		switch ( cnode.nodeType ) {
			case 3: // TEXT_NODE
				arr['__text'] = cnode.nodeValue;
				break;
			case 4: // CDATA_SECTION_NODE
				arr['__cdata'] = cnode.nodeValue;
				break;
			case 1: // ELEMENT_NODE
				if ( cnode.firstChild === null )
					arr[cnode.nodeName.toLowerCase()] = '';
				else if ( cnode.firstChild.nodeType == 3 || cnode.firstChild.nodeType == 4 ) // TEXT_NODE || CDATA_SECTION_NODE
					arr[cnode.nodeName.toLowerCase()] = ( filter === null ? cnode.firstChild.nodeValue : filter(cnode.firstChild.nodeValue) );
				else {
					var idx = cnode.nodeName.toLowerCase();
					if ( arr[idx] === undefined )
						arr[idx] = new Array();
					arr[idx].push(site_parse_node(cnode, filter));
				}
				break;
			default:
				break;
		}
	}
	return arr;
}


// ASSIGN WINDOW.ONLOAD FUNCTIONS HERE
function addLoadEvent(func) {
	var oldonload = window.onload;
	if ( typeof window.onload != 'function' ) {
		window.onload = func;
	} else {
		window.onload = function() {
			oldonload();
			func();
		}
	}
}


function toggleClass(id, class1, class2) {
	elref = document.getElementById(id);
	elref.className = elref.className == class1 ? class2 : class1;
}



function function_hook(func1, func2) {
	//var oldfunc = func1;
	eval('var oldfunc = ' + func1 + ';');
	if ( typeof oldfunc != 'function' ) {
		eval(func1 + ' = func2;');
		//func1 = func2;
	} else {
		eval(func1 + ' = function() { oldfunc(); func2(); }');
		/*func1 = function() {
			oldfunc();
			func2();
		}*/
	}
}

function obj_pos_x(obj) {
	var curleft = 0;
	if ( obj.offsetParent )
		while ( 1 ) {
			curleft += obj.offsetLeft;
			if ( !obj.offsetParent ) break;
			obj = obj.offsetParent;
		}
	else if ( obj.x )
		curleft += obj.x;
	return curleft;
}

function obj_pos_y(obj) {
	var curtop = 0;
	if ( obj.offsetParent )
	while ( 1 ) {
		curtop += obj.offsetTop;
		if ( !obj.offsetParent ) break;
		obj = obj.offsetParent;
	}
	else if(obj.y)
		curtop += obj.y;
	return curtop;
}




function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}





/*
	CLONER FUNCTIONS
*/

function clone_1st_div (node) {
	var original = node.getElementsByTagName ('div') [0];
	var new_node = original.cloneNode (true);
	clear_inputs (new_node);
	node.appendChild (new_node);
}

function clear_inputs (node)
{
	var newinput = node.getElementsByTagName ('input');
	for (var i=0; i<newinput.length; i++) {
		if (newinput[i].type == 'text') newinput[i].value = '';
	}
}

function remove_element (node)
{
    var papa = node;

    if (node.parentNode.getElementsByTagName ('div').length > 1)
    {
        node.parentNode.removeChild (node);
    }
    else
    {
        clear_inputs (node);
    }
}
/*
function moveUp_element (node)
{
// ideja je da pokupi vrednost svoga inputa
    var myinput = node.getElementsByTagName ('input') [0];
    var myinputvalue = myinput.value;
//  pa da se nadje prethodni input, ako postoji
    while (node.previousSibling && node.previousSibling.nodeName.toLowerCase () != 'div')
    {
        node = node.previousSibling;
    }
    if (node.previousSibling)
    {
//  i sad trampimo vrednosti
        node = node.previousSibling;
        myinput.value = node.getElementsByTagName ('input') [0].value;
        node.getElementsByTagName ('input') [0].value = myinputvalue;
    }
}
*/
function moveDown_element (node)
{
    var upinputs = node.getElementsByTagName ('input');
/*
    pa da se nadje naredni input, ako postoji
*/
    while (node.nextSibling && node.nextSibling.nodeName.toLowerCase () != 'div')
    {
        node = node.nextSibling;
    }
    if (node.nextSibling)
    {
/*
    i sad trampimo vrednosti
*/
        node = node.nextSibling;
        var downinputs = node.getElementsByTagName ('input');
        var tempvalue;
        for (var i = 0; i < downinputs.length; i++)
        {
            tempvalue = downinputs [i].value;
            downinputs [i].value = upinputs [i].value;
            upinputs [i].value = tempvalue;
        }
    }
}

function moveUp_element (node)
{
    var downinputs = node.getElementsByTagName ('input');
/*
    pa da se nadje prethodni input, ako postoji
*/
    while (node.previousSibling && node.previousSibling.nodeName.toLowerCase () != 'div')
    {
        node = node.previousSibling;
    }
    if (node.previousSibling)
    {
/*
    i sad trampimo vrednosti
*/
        node = node.previousSibling;
        var upinputs = node.getElementsByTagName ('input');
        var tempvalue;
        for (var i = 0; i < upinputs.length; i++)
        {
            tempvalue = upinputs [i].value;
            upinputs [i].value = downinputs [i].value;
            downinputs [i].value = tempvalue;
        }
    }
}
/*
	CLONER END
*/

