var Xiang=new Object();

var trace = function(o){
    if(0){
         if(window.console && window.console.info){
             $(arguments).each(function(){console.info(this)});
         }
    }
}

Xiang.EventMonitor = function(){
	this.listeners = new Object();
}
Xiang.EventMonitor.prototype.broadcast=function(widgetObj, msg, data){
	var lst = this.listeners[msg];

	if(lst != null){
		for(var o in lst){
			lst[o](widgetObj, data);
		}
	}
}
Xiang.EventMonitor.prototype.subscribe=function(msg, callback){
	var lst = this.listeners[msg];
	if (lst) {
		lst.push(callback);
	} else {
		this.listeners[msg] = [callback];
	}
}
Xiang.EventMonitor.prototype.unsubscribe=function(msg, callback){
	var lst = this.listener[msg];
	if (lst != null){
		lst = lst.filter(function(ele, index, arr){return ele!=callback;});
	}
}


// Page scope event-monitor obj.
var event_monitor = new Xiang.EventMonitor();

function load_event_monitor(root) {
	var re = /a_(\w+)/;
	var fns = {};
	$(".x", root).each(function(i) {
		var m = re.exec(this.className);
		if (m) {
			var f = fns[m[1]];
			if (!f) {
				f = eval("Xiang.init_"+m[1]);
				fns[m[1]] = f;
			}
			f && f(this);
		}
	});
}

Xiang.init_validate_form = function(form) {
	$(form).submit(function(){
		var ret=true;
		$(".star",form).each(function(i){
			if( $(this).attr("value")=='') {
				_alert($(this).attr("alt"));
				ret=false;
				return false;
			}
		});
		return ret;
	});
}
