// FS MontaForm Core
// Por Rodrigo Fante
// Fazedor de Site - http://www.fazedordesite.com

var elem=1; // Elements counter
var formID = "form1"; // Standard ID
var fpid=""; // used to make id switch

var autoForm = {
	Version: function(){
		return "1.0.0";
	},	
	Start: function(){
		addEvent($id("code_cont"),"click",code_sel);
		$obj.create("form", formID, "montaform");
		$id(formID).setAttribute("name",formID);
		$id(formID).setAttribute("method","POST");
		$id(formID).setAttribute("action","");
		$id(formID).style.position="relative";
		regua.Start();
		var timer = setInterval("fsform.elemNum()",100);
	},
	UpdateCode: function(){
		$id("code_cont").value = $id("montaform").innerHTML;
	}
}
var fsform = {
	Add: function(type){
		switch(type){
			case "text":
				var tempID = "text"+elem;
				$obj.create("input", tempID,formID);
				autoForm.UpdateCode();
				break;
			case "label":
				var tempID = "label"+elem;
				$obj.create("label", tempID,formID);
				$id(tempID).innerHTML=tempID;
				autoForm.UpdateCode();
				break;
			case "select":
				var tempID = "select"+elem;
				$obj.create("select", tempID,formID);
				$obj.create("option", "opt1",$id(tempID));
				$id(tempID).firstChild.setAttribute("value","opt1");
				$id(tempID).firstChild.setAttribute("selected",true);
				$id(tempID).firstChild.innerHTML = "opt1";
				autoForm.UpdateCode();				
				break;
			case "radio":
				var tempID = "radio"+elem;
				$obj.create("input", tempID,formID);
				$id(tempID).setAttribute("type","radio");
				autoForm.UpdateCode();
				break;		
			case "check":
				var tempID = "checkbox"+elem;
				$obj.create("input", tempID,formID);
				$id(tempID).setAttribute("type","checkbox");
				autoForm.UpdateCode();
				break;			
			case "button":
				var tempID = "button"+elem;
				$obj.create("input", tempID,formID);
				$id(tempID).setAttribute("type","button");
				$id(tempID).setAttribute("value",tempID);
				autoForm.UpdateCode();
				break;						
		}
		elem++;
		$obj.opacity(tempID,50);
		$id(tempID).onmousedown = function(){ startDrag(this.id) }
		$id(tempID).onmouseup = function(){ stopDrag() }
		$id(tempID).onclick = function(){ fsform.Edit(this) }
	},
	Edit: function(field){
		this.Select(field);
		$id("id_obj").value = !field.getAttribute("id")?"":field.getAttribute("id");
		$id("nome_obj").value = !field.getAttribute("name")?"":field.getAttribute("name");
		$id("value_obj").value = !field.getAttribute("value")?"":field.getAttribute("value");
		$id("inner_obj").value = !field.innerHTML?"":field.innerHTML;		
	},
	saveId: function(field){
		fpid = field.value;
	},
	Select: function(field){
		$obj.opacity(field.getAttribute("id"),100);
		stBar.selecionado(of_id);
		var formpos = $obj.getPos(formID);
		var objPos = $obj.getPos(field.getAttribute("id"));
		x = objPos[1]-formpos[1];
		y = objPos[0]-formpos[0];
		stBar.posX(x);
		stBar.posY(y);
	},
	unselectAll: function(obj){
		tot = elem-1;
		for(i=0;i<tot;i++){
			if($id("montaform").firstChild.childNodes[i].getAttribute("id")!=obj) 
				$obj.opacity($id("montaform").firstChild.childNodes[i].getAttribute("id"),50);
		}
	},
	elemNum: function(){
		$id("numElem").innerHTML = elem-1;
	},
	Properties: function(field){
		switch(field.getAttribute("id")){
			case "id_obj":				
				$id(fpid).setAttribute("id",field.value);
				this.saveId(field);
				autoForm.UpdateCode();
				break;
			case "nome_obj":
				$id($id("id_obj").value).setAttribute("name",field.value);
				autoForm.UpdateCode();
				break;
			case "value_obj":
				$id($id("id_obj").value).setAttribute("value",field.value);
				autoForm.UpdateCode();			
				break;
			case "inner_obj":
				$id($id("id_obj").value).innerHTML=field.value;
				autoForm.UpdateCode();			
				break;			
		}
	}
}
var stBar = {
	selecionado: function(obj){ $id("objeto_selecinado").innerHTML = obj; },
	posX: function(pos){ $id("posX").innerHTML = pos; },
	posY: function(pos){ $id("posY").innerHTML = pos; }
}
var regua = {
	Start: function(){
		var formpos = $obj.getPos(formID);
		$id("reguaX").style.left = formpos[1]+"px";
		$id("reguaY").style.left = formpos[1]+"px";
		$id("reguaX").style.top = formpos[0]+"px";
		$id("reguaY").style.top = formpos[0]+"px";		
		$id("reguaY").style.display = "none";	
		$id("reguaX").style.display = "none";	
	},
	x: function(pos){
		if(pos<=0) pos=0;
		$id("reguaX").style.left = pos+"px";
	},
	hx: function(h){
		$id("reguaX").style.height = h+"px";
	},
	y: function(pos){
		if(pos<=0) pos=0;
		$id("reguaY").style.top = pos+"px";
	},
	wy: function(w){
		$id("reguaY").style.width = w+"px";
	},
	show: function(){
		$id("reguaY").style.display = "";	
		$id("reguaX").style.display = "";	
	},
	hide: function(){
		$id("reguaY").style.display = "none";	
		$id("reguaX").style.display = "none";	
	}
	
}
function code_sel(){
	$id("code_cont").select();
}

addEvent(window,"load", autoForm.Start);