/**
* @fileoverview Template related functions
* 
* @author Stefan Deitmer
* @version 1.0
*
* @class
* @constructor
*/

Pigaia.Template = function(_nodename)
{
  if ((arguments.length==1)&&(typeof arguments[0]=="boolean") && (arguments[0]==false)){
    return;
  }
  
  var node = $("#"+_nodename).clone(true).removeAttr("id");

  var classcache = {};
  node.find("*").each( function()
      {
        var cns = $(this).get(0).className.split(" ");
        for (var i=0; i<cns.length; i++)
        {
          var cn = cns[i];
          if (!classcache[cn])
          {
            classcache[cn] = $(this);
          }
          else
          {
            classcache[cn] = classcache[cn].add(this);
          }
        }
      });

  this.findClass = function(cn)
  {
    var c = classcache[cn];
    return c ? c : $("#this_id_does_not_exist");
  }
  
  this.getNode = function() { return node; };
  this.getNodeElement = function() { return node.get(0); };
  this.updateField = function(name, value) 
  {
    var f = this.findClass(name);
    if (typeof value == "string")
    {
      value = value.replace(/</g, "&lt;");
      value = value.replace(/>/g, "&gt;");
      value = value.replace(/\n/g, "<br/>");  
      f.html(value);
    }
    else
    {
      f.text(value);
    }
  };
  this.updateFieldHTML = function(name, value) 
  {
    this.findClass(name).html(value);
  };
  this.getField = function(name)
  {
    return this.findClass(name);
  };
  this.removeClass = function(fieldname, classname)
  {
    var f = this.findClass(fieldname);
    f.removeClass(classname);
    if (classcache[classname])
    {
      classcache[classname] = classcache[classname].not(f);
    }
  };
  this.setFormValue = function(name, value) 
  { 
    this.findClass(name).attr("value", value);
  };
  this.getFormValue = function(name, notrim)
  {
    if (notrim)
    {
      return this.findClass(name).val();
    }
    else
    {
      return $.trim(this.findClass(name).val());
    }
  };
  this.isChecked = function(name)
  {
    return node.find("."+name+":checked").length > 0;
  };
  this.setChecked = function(name, value)
  {
    if (value)
    {
      this.findClass(name).attr("checked", "checked");
    }
    else
    {
      this.findClass(name).removeAttr("checked");
    }
  };
  this.getRadio = function(name, value)
  {
    return node.find("[name=" + name + "]:checked").val();
    //return node.find("[name=" + name + "]).fieldValue()[0];
  };
  this.setRadio = function(name, value)
  {
    node.find("[name=" + name + "]").val([""+value]);
  };
  this.initTabs = function(tabclass)
  {
    node.find("." + tabclass + " > ul").tabs();
  };
};

Pigaia.Template.prototype = new Pigaia.Root(false);
Pigaia.Template.prototype.Super = Pigaia.Root;
Pigaia.Template.prototype.Class = "Template";
Pigaia.Template.prototype.Package = "Pigaia";
Pigaia.Template.prototype.ClassId = "Pigaia.Template";
Pigaia.forName["Pigaia.Template"] = Pigaia.Template;
