var Register = Class.create();

Register.prototype = {
  initialize: function(box, elements, chars, elm) {
	this.elements = elements;
	this.options = new Array();
	this.chars = chars;
	this.currIndex = 0;
	this.box = box;
	this.elm = elm;
  },
  
  initRegister: function(){
  	this.reset(this.elm);
  	for(i = 0; i < this.chars.length; i++){
		var Char = this.chars.charAt(i);
		try {
			var text = document.createTextNode(Char);
		    element = document.createElement("A");
		    element.setAttribute("href", "#");
			if(this.currIndex == i){
				element.className = "current";
			}
		    element.appendChild(text);
		} catch (e) {
			if(this.currIndex == i)
				element = document.createElement("<a href=\"#\" class=\"current\">" + Char + "</a>");
			else
				element = document.createElement("<a href=\"#\">" + Char + "</a>");
		}
		if(this.elm.id == 'register_city'){
			Event.observe(element, 'click', registerEventCity, false);
		} else {
			Event.observe(element, 'click', registerEventCountry, false);
		}
		this.elm.appendChild(element);		
	}
  },

  initOptions: function(){
  var countElm = 0;
	var index = 0;
	var element = null;
	for(i = 0; i < this.elements.length; i++) {
		var tmp = this.elements[i];
		var _value = tmp.getElementsByTagName("value")[0].firstChild.nodeValue;
		var _label = tmp.getElementsByTagName("label")[0].firstChild.nodeValue;
		var text = document.createTextNode(_label);
		element = document.createElement("OPTION");
		element.setAttribute("value", _value);
		if(tmp.attributes.getNamedItem("selected") != null)
			element.selected = true;
		
		element.appendChild(text);

		index = this.getIndex(_label.charAt(0));
		if(index == this.currIndex) {
			this.box.appendChild(element);
			countElm++;
		}
		if(this.options[index] == null){
			this.options[index] = new Array();
		}
		this.options[index].push(element);
	}
  changeSize(this.box.id, countElm);
  },
  
  change: function(Char){
 	r = $A(this.elm.getElementsByTagName('a'));
  r[this.currIndex].removeClassName("current");
	this.currIndex = this.getIndex(Char);
	r[this.currIndex].addClassName("current");

	if(this.options[this.currIndex] != null) {
		this.reset(this.box);
		tmp = this.options[this.currIndex];
		for(i = 0; i < tmp.length; i++) {
    this.box.appendChild(tmp[i]);
    }
    changeSize(this.box.id, tmp.length);			
		try {
			this.box.focus();
		} catch(e){
			if (debugmode) {
				alert(e.message);
			}
		}
	}

  },
  
  reset: function(box){
	while (box.hasChildNodes())
		box.removeChild(box.firstChild);
  },
  
  getIndex: function(Char) {
	return this.chars.indexOf(Char);
  }
  
}
