// 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 acceptUploadCam(file){

  $ES('input','photoPlayer').each(function(e){  
      e.value = file;
    }
  );

  $ES('img','photoPlayer').each(function(e){
      e.src = file;
      e.width  = 320;
      e.height = 240;
    }
  );
  document.dialogo.close();
  
}

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': '/players/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',
      'class':'button'
    }, __('Upload'));
    /*var formSize = Widget.input({
      'type': 'hidden',
      'name': 'size',
      'value': size
    });*/
    var formId = Widget.input({
      'type': 'hidden',
      'name': 'id',
      'value': divId
    });

    form.appendChildren([
      formId,
      //formSize,
      formImg,
      Widget.br(),
      formInput,
      Widget.br(),
      formSubmit,
      Widget.br(),
    ]);
    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 imageProfileInput(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': '/players/imageInput',
      'method': 'post',
      'enctype': 'multipart/form-data'
    });

    form.addEvent(
      'submit',
      function() {
        this.setAttribute('encoding', 'multipart/form-data');
        this.encoding = 'multipart/form-data';
        var form = new Form(this);
        form.__onSubmit();
      }.bind(form)
    );
    
    var formInput = Widget.fromHTML('<input type="file" name="image" />');
    var formImg = Widget.fromHTML('<img src="'+(div.__input.value ? div.__input.value : '/img/default.png')+'" />');

    if (!div.__input.value || div.__input.value == 'default.png') {
      formImg.style.display = 'none';
    }

    var formSubmit = Widget.fromHTML('<input type="submit" class="button" value="'+__('Upload')+'" />');
    var formSize = Widget.fromHTML('<input type="hidden" name="size" value="'+size+'" />');
    var formId = Widget.fromHTML('<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
    ]);

    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()-100);
  div.__toolbox.show();

}

function signForm(f) {
	if (f.method.toLowerCase() != 'get') {
		if (!f.nonce) {
			f.appendChild(
				Widget.input({'type': 'input', 'name': 'nonce', 'style': {'display': 'none'}})
			);
		}
    // comentar ésto para testear
		f.nonce.value = document.nonce;
	}
}
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;
}


function include(path) {
  var head = document.getElementsByTagName('head');
  if (head) {
    var script = document.createElement('script');
    
    script.setAttribute('type', 'text/javascript');
    script.setAttribute('src', path);

    head[0].appendChild(script);
  }
}
