// $Id: x_menu.js,v 1.4 2009/04/13 16:16:53 eugene Exp $

xMenu = function() {
	this.init = function( id) {
		var main_obj = this;
		var menu = document.getElementById(id);

		this.item_tag = String(this.item_tag || "li").toLowerCase();
		this.show_delay	= this.show_delay || 0;
		this.hide_delay = this.hide_delay || 300;

		this.class_over	= this.class_over || "over";
		var _over_ = [];
		var regRemoveOver = new RegExp( "^"+this.class_over+"$|\\s+"+this.class_over+"$", "");
		var showTimeout=0;
		var hideTimeout=0;

		this.registerEvent( menu, "mouseover",
			function( e) {
				var obj = (e && e.target) || (event && event.srcElement);
				do {
					if ( obj.tagName.toLowerCase() == main_obj.item_tag ) {
						clearTimeout( showTimeout);
						clearTimeout( hideTimeout);
						showTimeout = setTimeout( function(){main_obj.setUnsetOverClass(obj,1);}, main_obj.show_delay);
						break;
					}
				} while( !(menu==obj) && (obj = obj.parentNode) )
			}
		)
		this.registerEvent( menu, "mouseout",
			function( e) {
				var obj = (e && e.target) || (event && event.srcElement);
				do {
					if (  obj.tagName.toLowerCase() == main_obj.item_tag ) {
						clearTimeout( showTimeout);
						clearTimeout( hideTimeout);
						hideTimeout = setTimeout( function(){main_obj.setUnsetOverClass(obj,0);}, main_obj.hide_delay);
						break;
					}
				} while( !(menu==obj) && (obj = obj.parentNode) )
			}
		)
		this.setUnsetOverClass = function( obj, mode) {
			var hide = [];
			var o;
			while( o = _over_.pop() ) {
				o.hide = 1;
				hide.push(o);
			}
			if ( mode ) {
				do {
					if ( obj.tagName.toLowerCase() == this.item_tag ) {
						_over_.push( obj);
						obj.hide = 0;
						if ( !obj.visible ) {
							obj.className += " " + this.class_over;
							obj.visible = 1;
						}
					}
				} while( obj != menu && ( obj = obj.parentNode ) )
			}
			for( var i=0; i<hide.length; i++) {
				if ( hide[i].hide && hide[i].visible ) {
					hide[i].className = hide[i].className.replace( regRemoveOver, "");
					hide[i].visible = 0;
				}
			}
		}
	}
}
xMenu.prototype.registerEvent = function( obj, event_, func) {
	document.all?obj.attachEvent( "on".concat( event_), func):obj.addEventListener( event_, func, false);
}

var menuAccord = function(id) {
    var Dom = YAHOO.util.Dom;
	var id = id;
	var main = document.getElementById( id);
	var ancrs = main.getElementsByTagName( "A");
	var last_open;
	var _onclick_ = function() {
		var _this_ = this;
		var obj = this.section;
		if ( this.className == "link_to" ) {
			return true;
		} else if ( this.className == "open" ) {
		    var anim = new YAHOO.util.Anim( obj, {height:{to:1}}, .5, YAHOO.util.Easing.easeInStrong);
			anim.onComplete.subscribe( function() {_this_.className="";last_open=null;});
			anim.animate();
		} else {
			last_open && last_open.onclick();
		    var anim = new YAHOO.util.Anim( obj, {height:{to:obj.scrollHeight}}, .5, YAHOO.util.Easing.easeInStrong);
			anim.onComplete.subscribe( function() {_this_.className="open";last_open=_this_;});
			anim.animate();
		}
		return false;
	}
	for( var i=0; i<ancrs.length; i++) {
		if ( ancrs[i].parentNode.parentNode==main ) {
			var obj = ancrs[i].parentNode.getElementsByTagName( "ul")[0];
			if ( obj ) {
				ancrs[i].section = obj;
				ancrs[i].onclick = _onclick_;
			}
		}
	}
}

featuredBlocks = function( id, pos) {
	var timeout_id = 0;
	var timeout1 = 5000;
	var timeout2 = 30000;
	var lastOpen = null;
	var id = id;
	var main = document.getElementById( id);
	var t = main.getElementsByTagName( "div");
	var header, content;
	for( var i=0; i<t.length; i++) {
		if ( t[i].className == "header" ) {
			header = t[i];
		}
		if ( t[i].className == "content" ) {
			content = t[i];
		}
	}
	var ancr = header.getElementsByTagName( "a");
	var blocks = [];
	var t = main.getElementsByTagName( "li");
	for( var i=0; i<t.length; i++) {
		if ( t[i].className == "block" ) {
			blocks.push(t[i]);
		}
	}
	for( var i=0; i<ancr.length; i++) {
		ancr[i].slaveBlock = blocks[i] || null;
		ancr[i].next = ancr[i+1] || ancr[0];
		ancr[i].onclick = function(e) {
			var anc = this;
			var ev = e || window.event || 0;
			lastOpen && lastOpen.slaveBlock && (lastOpen.slaveBlock.className="block");
			anc.slaveBlock && anc.slaveBlock && (anc.slaveBlock.className="block active");
			lastOpen && (lastOpen.className = "");
			anc.className = "active";
			lastOpen = anc;
			timeout_id && clearTimeout(timeout_id);
			timeout_id = setTimeout( function(){anc.next.onclick();}, ev?timeout2:timeout1);
			return false;
		}
	}
	ancr[0].onclick();
}

var str_replace = 0;
var postStart = false;
jUploadIsUpload = false;
jUploadIsStarted = false;
var startFormUpload = false;
submit_fform = function( page, todo, id, pid, table, https) { 
	if ( jUploadIsUpload ) return false;
	if ( ( document.fform.elements["actioncontext[page]"]) && (page || page == "") ) {
		document.fform.elements["actioncontext[page]"].value = page;
	}
	if ( ( document.fform.elements["actioncontext[todo]"]) && (todo || todo == "") ) {
		document.fform.elements["actioncontext[todo]"].value = todo;
	}
	if ( ( document.fform.elements["actioncontext[id]"]) && (id || id == "") ) {
		document.fform.elements["actioncontext[id]"].value = id;
	}
	if ( ( document.fform.elements["actioncontext[pid]"]) && (pid || pid == "") ) {
		document.fform.elements["actioncontext[pid]"].value = pid;
	}
	if ( startFormUpload ) {
	try{
		JuploadOnSubmit();
	} catch( ex) {};
	jUploadError_ = true;
	try{
		jUploadError_ = jUploadError?false:true;
	} catch( ex) {};
	if ( jUploadError_ ) document.fform.submit();
  }
  else
    document.fform.submit();
}
function getParam( str, delimeter, pos)
{
  if ( str.indexOf( delimeter, pos) != - 1 )
  {
    param = str.substring( pos, str.indexOf( delimeter, pos));
    next_pos = str.indexOf( delimeter, pos)+1;
  }
  else
  {
    param = str.substring( pos);
    next_pos = str.length;
  }
  return { "param":param, "next_pos":next_pos};
}

loadAJAXPage = function( url, context) {
	var time = (new Date())-0;
	var new_url = url + (url.indexOf( "?")==-1?"?":"");
	new_url += "&ajax[callback]="+myEscape(context[0]) + "&ajax[selector]="+myEscape(context[1]) + "&"+time;
	var t0 = document.getElementById( "ajax_loader");
	var t = document.createElement("script");
	t.id = "ajax_loader";
	t.type = 'text/javascript';
	t.src = new_url;
	if ( !t0 ) {
		document.getElementsByTagName( "head")[0].appendChild(t);
	} else {
		t0.parentNode.replaceChild( t, t0);
	}
}

add_tips = function( id) {
	var m = new message_Popup( "tips_popup");
	var over = function(ev) {
		var obj = (ev && ev.target) || (event && event.srcElement);
		while( obj.parentNode && !obj.data ) {
			if ( obj == m.template_node ) {
				m.hide();
				return;
			}
			obj = obj.parentNode;
		}
		if ( obj.data ) {
			var content = '\
			<div>\
				<div><div style="padding:0px;font-size:11px;font-weight:bold;">' + obj.data[0] + '</div></div>\
				<div style="padding:0px;font-size:11px;font-weight:normal;"><b>' + obj.data[1] + '</b><br/>' + obj.data[2] + '<br/>'+obj.data[3]+'</div>\
			</div>';
			m.show(obj, ev || window.event, content);
		}
	}
	var out = function(ev, mode) {
		var obj = (ev && ev.target) || (event && event.srcElement);
		while( obj.parentNode && !obj.data ) {
			obj = obj.parentNode;
		}
		m.hide();
	}
	var anch = document.getElementById( id).getElementsByTagName( "A");
	for( var i=0; i<anch.length; i++) {
		var rel = String( anch[i].getAttribute( "rel"));
		if ( rel && rel != "" && rel.indexOf("tips:") == 0 ) { 
			eval( "var d=".concat( rel.substr(5,rel.length), ";"));
			anch[i].data = d;
			m.register_event( anch[i], "mouseover", over);
			m.register_event( anch[i], "mouseout", out);
		} else if ( rel && rel != "" && rel.indexOf("ajax:") == 0 ) { 
			eval( "var d=".concat( rel.substr(5,rel.length), ";"));
			anch[i].ajax_context = d;
			anch[i].onclick = function() {
				loadAJAXPage(this.href, this.ajax_context);
				return false;
			}
		}
	}
}
t();

xMenu.prototype.registerEvent( window, "load", function(){
	var inputs = document.body.getElementsByTagName( "input");
	for( var i=0; i<inputs.length; i++) {
		var cur = inputs[i];
		if ( cur.getAttribute( "rel") && cur.getAttribute( "rel").toLowerCase() == "date" ) {
			cur.onclick = function(){popUpCalendar( this, this, 'mm/dd/yyyy')};
			var anc = document.createElement("a");
			anc.href = "#";
			anc.onclick = function(){popUpCalendar( this.previousSibling, this.previousSibling, 'mm/dd/yyyy');return false;};
			var img = document.createElement("img");
			img.style.border = "0px";
			img.src = "./images/cal.gif";
			anc.appendChild(img);
			cur.parentNode.insertBefore( anc, cur.nextSibling);
		}
	}
});

