function in2Cart_ProductOptionSetting()
{
this.create=function()
				{
				this.title='';
				this.tag='';
				this.price=0.0;
				}

this.loadXML=function(xmlnode)
		{
                this.title=getPropValue(xmlnode.getElementsByTagName("title")[0]);
                this.tag=getPropValue(xmlnode.getElementsByTagName("tag")[0]);
                this.price=getPropValue(xmlnode.getElementsByTagName("price")[0]);
                }

this.getXMLStr=function()
		{
                return "<setting><title>"+this.title+"</title><tag>"+this.tag+"</tag><price>"+this.price+"</price></setting>";
                }

this.create();

return this;
}

function in2Cart_ProductOption()
{
this.create=function()
	{
        this.title='';
        this.tag='';
        this.settings=new Array();
        }

this.loadXML=function(xmlnode)
    {
			  this.title=getPropValue(xmlnode.getElementsByTagName("title")[0]);
			  this.tag=getPropValue(xmlnode.getElementsByTagName("tag")[0]);
              this.settings=new Array();
                          
			  var settings=xmlnode.getElementsByTagName("setting");

			  for (var s=0; s<settings.length; s++)
			    {
			    var settingNode=settings[s];
			    var setting=new in2Cart_ProductOptionSetting();

			    setting.loadXML(settingNode);

                this.settings[this.settings.length]=setting;
                }
    }

this.getXMLStr=function()
	{
        var out="<option><title>"+this.title+"</title><tag>"+this.tag+"</tag><settings>";

        for (var s=0;s<this.settings.length; s++)
          out+=this.settings[s].getXMLStr();

        out+="</settings></option>";

        return out;
        }

this.addSetting=function(setting)
	{
        this.settings[this.settings.length]=setting;
        }

this.delSetting=function(tag)
	{
        var oldsettings=this.settings;
        this.settings=new Array();

        for (var i=0; i<oldsettings.length; i++)
          {
          var setting=oldsettings[i];

          if (setting.tag!=tag)
            this.settings[this.settings.length]=setting;
          }

	oldsettings=null;
        }

this.create();

return this;
}

function in2Cart_Product()
{
this.create=function()
	{
        this.id=0;
        this.title='';
        this.ref='';
        this.desc='';
        this.price=0.0;
        this.weight=0.0;
        this.width=0.0;
        this.depth=0.0;
        this.height=0.0;
        this.img='';
        
        this.options=new Array();
        this.categories=new Array();
		
        this.onLoad=null;
        this.onSave=null;
        }

this.load=function(ref)
	{
	    var request=new ajaxRequest(this);
	    request.onResponse=function(xmlHttp) 
                {
                this.callerObj.loadXML(xmlHttp.responseXML); 
                
                if (this.callerObj.onLoad)
                  this.callerObj.onLoad(this.callerObj);
                }
	    
        request.sendRequest("GET",in2CartAdminUrl+"interadmin.php?ac=loadProd&ref="+ref,null);
    }

this.loadXML=function(xmldoc)
	{
        this.id=getPropValue(xmldoc.getElementsByTagName("id")[0]);
	    this.title=getPropValue(xmldoc.getElementsByTagName("title")[0]);
	    this.ref=getPropValue(xmldoc.getElementsByTagName("ref")[0]);
	    this.desc=getPropValue(xmldoc.getElementsByTagName("desc")[0]);
	    this.price=parseFloat(getPropValue(xmldoc.getElementsByTagName("baseprice")[0]));
        this.weight=parseFloat(getPropValue(xmldoc.getElementsByTagName("weight")[0]));
        this.width=parseFloat(getPropValue(xmldoc.getElementsByTagName("width")[0]));
        this.depth=parseFloat(getPropValue(xmldoc.getElementsByTagName("depth")[0]));
        this.height=parseFloat(getPropValue(xmldoc.getElementsByTagName("height")[0]));
        this.img=getPropValue(xmldoc.getElementsByTagName("img")[0]);
        
	    var options=xmldoc.getElementsByTagName("option");

	    for (var i=0; i<options.length; i++)
	      {
	      var optnode=options[i];
	      var opt=new in2Cart_ProductOption();

	      opt.loadXML(optnode);
	      
	      this.options[this.options.length]=opt;
	      }
          
        var category=xmldoc.getElementsByTagName("cid");
        
        for (var i=0; i<category.length; i++)
          this.categories[this.categories.length]=getPropValue(category[i]);
	}

this.save=function()
	{
        var xmlstr=this.getXMLStr();
        var request=new ajaxRequest(this);
        request.onResponse=function(xmlHttp)
                                    {
                                    var ok=parseInt(getPropValue(xmlHttp.responseXML.getElementsByTagName("result")[0]));

                                    if (ok==1)
                                      this.callerObj.id=parseInt(getPropValue(xmlHttp.responseXML.getElementsByTagName("id")[0]));
                                      
                                    if (this.callerObj.onSave!=null)
                                      this.callerObj.onSave(ok==1);
                                    }
                                                              
        request.sendRequest("POST",in2CartAdminUrl+"interadmin.php?ac=updateProd",xmlstr);
    }

this.getXMLStr=function()
    {
        var xmlstr="<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>";

        xmlstr+="<product><id>"+this.id+"</id><title>"+this.title+"</title><ref>"+this.ref+"</ref><desc>"+
        this.desc+"</desc><price>"+this.price+"</price><weight>"+this.weight+"</weight><width>"+this.width+"</width><depth>"+
        this.depth+"</depth><height>"+this.height+"</height><img>"+this.img+"</img><categories>";
        
        for (var i=0; i<this.categories.length; i++)
          xmlstr+="<cid>"+this.categories[i]+"</cid>";
          
        xmlstr+="</categories><options>";
        
        for (var i=0; i<this.options.length; i++)
          xmlstr+=this.options[i].getXMLStr();

        xmlstr+="</options></product>";
        
        return xmlstr;
    }
        
this.addOption=function(option)
	{
        this.options[this.options.length]=option;
    }

this.delOption=function(tag)
	{
        var oldoptions=this.options;
        this.options=new Array();

        for (var i=0; i<oldoptions.length; i++)
          {
          var opt=oldoptions[i];

          if (opt.tag!=tag)
            this.options[i]=opt;
          }

        oldoptions=null;
    }

this.clearCategories=function()
    {
    this.categories=new Array();
    }
    
this.addCategory=function(catid)
    {
        this.categories[this.categories.length]=catid;
    }
    
this.create();

return this;
}