// universal cross object handler
var CrossHandler = new Class({
  objects: [],
  add: function(obj) {
    for (var i = 0; i < this.objects.length; i++) {
      if (obj == this.objects[i]) {
        return i;
      }
    }
    this.objects.push(obj);
    return (this.objects.length - 1);
  },
  get: function(index) {
    return this.objects[index];
  }
});

document.CrossHandler = new CrossHandler();

function imageInput(img, size) {

  var ch = document.CrossHandler;

  var div = img;
  
  while (div.nodeName.toLowerCase() != 'div') {
    div = div.parentNode;
  }
  
  var divId = ch.add(div);

  if (!div.__toolbox) {

    for (var i = 0; i < div.childNodes.length; i++) {
      var node = div.childNodes[i];
      switch (node.nodeName.toLowerCase()) {
        case 'img':
          div.__img = node;
        break;
        case 'input':
          div.__input = node;
        break;
      }
    }

    var form = Widget.form({
      'action': '/users/imageInput',
      'method': 'post',
      'enctype': 'multipart/form-data',
      'onsubmit': 'return formSubmit(this);'
    });
    
    var formInput = Widget.input({
      'type': 'file',
      'name': 'image'
    });

    var formImg = Widget.img({
      'src': div.__input.value
    });

    var formSubmit = Widget.button({
      'type': 'submit'
    }, 'Subir imagen');

    var formSize = Widget.input({
      'type': 'hidden',
      'name': 'size',
      'value': size
    });

    var formId = Widget.input({
      'type': 'hidden',
      'name': 'id',
      'value': divId
    });

    var formLegend = Widget.span({}, 'Solo formato JPG');

    form.appendChildren([
      formId,
      formSize,
      formImg,
      Widget.br(),
      formInput,
      Widget.br(),
      formSubmit,
      Widget.br(),
      formLegend
    ]);



    var container = Widget.div({
      'id': 'imageInputContainer_'+divId,
      'class': 'image-uploader'
    });
    container.appendChild(form);

    var toolbox = new Toolbox(
      container,
      {
        enableDrag: false
      }
    );

    div.__formImg = formImg;
    div.__container = container;
    div.__toolbox = toolbox;
  }

  div.__toolbox.moveTo($(div.__img).getTop()+10, $(div.__img).getLeft()+10);
  div.__toolbox.show();

}

function signForm(f) {
	if (f.method.toLowerCase() != 'get') {
		if (!f.auth) {
			f.appendChild(
				Widget.input({'type': 'input', 'name': 'auth', 'style': {'display': 'none'}})
			);
		}
		f.auth.value = document.auth;
	}
}

formSubmit = function(form) {
	signForm(form);
  form = new Form(form);
  return form.__onSubmit();
}

function link(a, rpc) {
	if (rpc) {
		new Ajax(
			$type(a) == 'element' ? a.getAttribute('href') : a,
			{
				'method': 'get',
				'onComplete': function(text) {
					new JsonRpc(text, this);
				}.bindAsEventListener(this)
			}
		).request();
		return false;
	} else {
		var parent = a;
		while (parent) {
			if (parent.className == 'm-notebook-content') {
				var nb = parent;
				while (nb && nb.className != 'm-notebook') {
					nb = nb.parentNode;
				}
				if (nb) {
					nb.parent.updatePage(parent.getAttribute('name'), {'url': a.getAttribute('href') });
					nb.parent.selectPage(parent.getAttribute('name'));
					return false;
				}
				return true;
			}
			parent = parent.parentNode;
		}
	}
	return true;
}

