//--------------------------------------/
//	Power By Fason
//	Email : fason_pfx@hotmail.com
//--------------------------------------/


function Dsy() {
	this.Items = {};
};

Dsy.prototype.add = function(id,iArray) {
	this.Items[id] = iArray;
};

Dsy.prototype.Exists = function(id) {
	if(typeof(this.Items[id]) == "undefined") return false;
	return true;
};

function attachSelect(oDsy, aSel, aStore) {
	var Sel = new Array();
	var Store = aStore || [];
	if (!oDsy instanceof Dsy) throw new Error('Data error');
	for (var i=0; i<aSel.length; i++) {
		Sel[i] = document.getElementById(aSel[i]);
	}
	Sel[0].selectedIndex = 0;
	function addEvent(el, sHandler, fnc) {
		var newfun = function(x){
		//added by miller xie, add callback in xselect
			if( typeof(callbackHandle) != "undefined")
				callbackHandle(el);
			return fnc(x);
		}
	
		if (el.attachEvent)
			el.attachEvent(sHandler, newfun);
		else if (el.addEventListener)
			el.addEventListener(String(sHandler).replace(/on/i, ''), newfun, false);
		else el[sHandler] = newfun;
	};
	function doChange(v) {
	    var str = "0";
	    for (var i = 0; i < v; i++) { str += ("_" + Sel[i].selectedIndex); };
	    var ss = Sel[v];
	    if (oDsy.Exists(str)) {
	        with (ss) {
	            length = 0;
	            var ar = oDsy.Items[str], xx = 0;
	            for (var i = 0; i < ar.length; i++) {
	                var ot = ar[i][0], ov = ar[i][1] ? ar[i][1] : ot;
	                //if (ot == Store[v][0]) xx = i;	                
   			options[i] = new Option(ov, ot);
						
	                //Added by zhanghao
	                if(Store[v] instanceof Array){
	                	
	                    for(var j=0;j<Store[v].length;j++){
	                    	
	                        if(Store[v][j] == ot)options[i].selected = true;
	                    }
	                }else{
	                    if(ot == Store[v])options[i].selected = true;
	                }
	            }
	            //options[xx].selected = true;
	            if (++v < Sel.length){ doChange(v);
	            }
	        } 
	    } else {
	        for (var i = v; i<Sel.length; i++) {	        	
	            with (Sel[i]) {
	                length = 0;
	                options[0] = new Option("--", "");
	                options[0].selected = true;
	            }
	        }
	    }
	    
	    
	} 
	for (var i = 0; i<Sel.length - 1; i++){
		addEvent(Sel[i], "onchange", function(x) { 
			return function () { 
				doChange(x);
	    	}
		}(i+1));
	}
	doChange(0);
};

function add(from,to)
{
	var allbooth = document.all(from);
	var newselect = document.all(to);
	var oNewNode;
	var newoption;
	if(newselect.children.length!=0){
		for(i =0;i<allbooth.children.length;i++)
		{
		if(allbooth.children[i].selected)
			for(j=0;j<newselect.children.length;j++)
				if(allbooth.children[i].value==newselect.children[j].value)
				{	alert(allbooth.children[i].innerText+" have already selected!");
					return false;
				}
		}
	}
	for(i =0;i<allbooth.children.length;i++)
	{
	 	if(allbooth.children[i].selected)
	 	{
	 		newoption = document.createElement("option");
		 	newoption.value=allbooth.children[i].value;
		 	newoption.innerText=allbooth.children[i].innerText;
	   		newselect.appendChild(newoption);
	   		newoption.selected=true;
   		}
   	}
	return false;
}

function remove(removeobj)
{
	var newselect = document.all(removeobj);
	var obj = new Array();
	var k = 0;
	
	for(i =0;i<newselect.childNodes.length;i++){
	 	if(newselect.childNodes[i].selected){
  			obj[k] = newselect.childNodes[i];
  			k++;
	  	}
	  }
  	for(i=0;i<k;i++)
  		newselect.removeChild(obj[i]);
  	
	return false;
}
