/*******************************************************************************
//# Author:        			
*******************************************************************************/

var nz = function( id ){
	if( typeof( id ) == 'object'){
		obj = id;
	}else{
		obj = document.getElementById( id );
		if( !obj ){
			return {};
		}
	}
	return obj;
}
nz.o = new Array();
nz.t = new Object();
nz.rm = function(o){
	if( !o ){
		return;
	}	
	 if( !o.parentNode ){
  		return;
       }	

	if( o.id ){
		id = o.id;
		nz.o[id] = null;
	}
	o.parentNode.removeChild(o);
}

nz.addEvent = function (id, evType, fn){
	if( typeof( id ) == 'object'){
		obj = id;
	}else{
		obj = document.getElementById( id );
		if( !obj ){
			return false;
		}
	}
		
 	if (obj.addEventListener){
    		obj.addEventListener(evType, fn, true);
    		return true;
 	} else if (obj.attachEvent){
    		var r = obj.attachEvent("on"+evType, fn);
    		return r;
 	} else {
    		return false;
 	}
}

nz.cr = function(tg){
	return document.createElement(tg);
}
nz.get = function(id){
	return document.getElementById(id);
}

nz.fixE = function( e ){
	
	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) 	{
		posx = e.pageX;
		posy = e.pageY;
	}else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
		+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
		+ document.documentElement.scrollTop;
	}


	if (typeof e.layerX == 'undefined'){
		//posx = e.offsetX;
		e.layerX = posx;
	}
	if (typeof e.layerY == 'undefined') {
		//posy = e.offsetY;
		e.layerY = posy;
	}

	e.posY = posy;	
	e.posX = posx;
	return e;
}

nz.toggleCheckBoxes = function( f ){
	if( !f.bxchecked ){
		f.bxchecked = true;
	}else{
		f.bxchecked = false;
	}

	els = f.elements;
	len = els.length;
	for( i=0;i<len;i++){
		el = els[i];
		if( el.type=='checkbox' ){
			el.checked = f.bxchecked;
		}
	}
}

nz.checkFormEl = function( el ){
	if( el.disabled == true ){
		return false;
	}

	if( el.type == 'checkbox' ){
		if( el.checked == false ){
			return false;
		}
	}

	if( el.type == 'radio' ){
		if( el.checked == false ){
			return false;
		}
	}

	return true;
}



nz.submitForm = function( f, callback, uri ){

	str = $(f).serialize	();

	if( !uri ){
		uri = f.action;
	}	
	if( uri.match(/\?/) ){	
		uri += '&ajax=1';
	}else{
		uri += '?ajax=1';
	}

	
	$.post( uri, str, callback );
}
nz.toJSON_RPC= function( m, ar ){
	aa = new Array();
	for( i = 0;i<ar.length;i++){
		e = ar[i];
		//alert(e);
		if( typeof(e) == 'string' ){
			aa.push( '"'+e+'"' );
		}else{
			aa.push(e);
		}
	}
	cont = '{"method":"'+m+'","params":['+aa.join(',')+']}';
	return cont;
}

/* from prototype.js */
nz.cumulativeOffset = function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      element = element.offsetParent;
    } while (element);
    return [valueL, valueT];
}


// Safari returns margins on body which is incorrect if the child is absolutely
// positioned.  For performance reasons, redefine Position.cumulativeOffset for
// KHTML/WebKit only.
if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) {
  Position.cumulativeOffset = function(element) {
    var valueT = 0, valueL = 0;
    do {
      valueT += element.offsetTop  || 0;
      valueL += element.offsetLeft || 0;
      if (element.offsetParent == document.body)
        if (Element.getStyle(element, 'position') == 'absolute') break;

      element = element.offsetParent;
    } while (element);

    return [valueL, valueT];
  }
}


nz.postJson = function( url, callback, content ){
	if( typeof(content) == 'undefined' ){
		content = null;
	}
	nz.postJson.json_cb = function( jstr ){
		var jr = eval('(' + jstr + ')');;
		callback( jr ); 
	}
	
	
	$.post( url, content, nz.getJson.json_cb );
}

