/**
* @author Rafael Ostertag <rafael.ostertag@math.uzh.ch>
*/
/* global $ */
/**
* Qfq Namespace
*
* @namespace QfqNS
*/
var QfqNS = QfqNS || {};
/**
* Qfq.Element Namespace
*
* @namespace QfqNS.Element
*/
QfqNS.Element = QfqNS.Element || {};
(function (n) {
'use strict';
/**
*
* @param name
* @returns {*}
* @function QfqNS.Element.getElement
*/
n.getElement = function (name) {
var $element = $('[name="' + name + '"]:not([type="hidden"])');
if ($element.length === 0) {
throw Error('No element with name "' + name + '" found.');
}
if ($element[0].nodeName.toLowerCase() === "select") {
return new n.Select($element);
}
if (!$element[0].hasAttribute('type')) {
return new n.Textual($element);
}
var type = $element[0].getAttribute('type').toLowerCase();
switch (type) {
case 'checkbox':
return new n.Checkbox($element);
case 'radio':
return new n.Radio($element);
case 'text':
case 'number':
case "email":
case "url":
case "password":
case "datetime":
case "datetime-local":
case "date":
case "month":
case "time":
case "week":
return new n.Textual($element);
default:
throw new Error("Don't know how to handle <input> of type '" + type + "'");
}
};
})(QfqNS.Element);