SC.Parser=function() {
            this.items=new Array();
            
            this.version=null;
            this.variable=null;
            
            this.catalog=null;
            this.total=null;
			this.subtotal=null;
            this.basket=null;
            this.entropy=null;
            
            this.keepShoppingUrl=null;
            this.keepShoppingTag=null;
 
            this.onComplete=null;
            this.onError=null;
            
            this.parseOnLoad=false;
}
 
SC.Parser.tryConfirmationVersion=function() {
            if (window.orderTotal!=undefined && window.ids!=undefined) {
                        return 3;
            } else {
                        return 2;
            }
}
 
SC.Parser.tryCartVersion=function() {
            if (SC.getInputByName("vwcatalog",null,"hidden")==null && SC.getInputByName("basket",null,"hidden")==null) {
                        return 3
            } else {
                        return 2
            }
}
 
SC.Parser.createItem = function() {
 
            var item=new Array();
                                                                                                            
            item.id=null;
            item.code=null;
            item.name=null;
            item.price=null;
            item.quantity=null;
            item.options=null;
            item.category=null;
            item.url=null;
            item.img=null;
            item.instock=null;
            item.imgTag=null;
            item.removeTag=null;
            item.quanityTag=null;
 
            return item;
}
 
SC.Parser.prototype.display = function() {
 
            var str="";
            
            var attrs=new Array("id","name","price","quantity","options","url","img","imgTag","removeTag","quantityTag","code");
 
            for (var i=0;i<this.items.length;i++) {
                        for (var j=0;j<attrs.length;j++) {
                                    str=str + attrs[j] + "=" + this.items[i][attrs[j]] + "\n";
                        }
                        str=str + "\n\n";
            }
 
            alert(str);
            alert(this.total);
}
 
SC.Parser.parse=function() {
 
            if (this.parseOnLoad) {
                        if (this.variable) {
                                    var f = window.onload;
 
                                    eval("f1=function () {" + this.variable + ".parserFunc();}");
 
                                    if (!f) {
                                                if (__SC_browser_info.browser=="opera") {
                                                            window.attachEvent("onload",f1);
                                                } else {
                                                            window.onload = f1;
                                                };          
                                    } else {
            
                                                if (__SC_browser_info.browser=="opera") {
                                                            window.attachEvent("onload",function() {f();f1();});
                                                } else {
                                                            window.onload = function() {
                                                                        f();
                                                                        f1();
                                                            }
                                                }
                                    }
                        }
            } else {
                        this.parserFunc();
            }
            
            
            
}
 
SC.Parser.ShoppingCart = function(variable, v) {   
            var x=new SC.Parser();
            
            x.variable=variable;
            
            x.version=(v==null) ? SC.Parser.tryCartVersion() : v;
            x.checkOutTag=null;
 
            x.parse=SC.Parser.parse;
            x.parserFunc=SC.Parser.ShoppingCart.doParse;
            
            return x;
}
 
SC.Parser.ShoppingCart.doParse=function() {
 
            var x,y,z,at;
            var tbl,td,tr;
            var els,els1;
                                    
            var hasOptions=false;
            var hasInStock=false;
 
            at=0;
            x=null;
 
            if (this.version<3) {
                        this.totalItems=SC.getInputValueByName("vwnitems","INPUT","hidden");
                        this.catalog=SC.getInputValueByName("vwcatalog","INPUT","hidden");
                        this.total=SC.getInputValueByName("vwtotal","INPUT","hidden");
                        this.basket=SC.getInputValueByName("basket","INPUT","hidden");
                        this.entropy=SC.getInputValueByName("vwentropy","INPUT","hidden");
            
                        this.checkOutTag=SC.getInputByName("checkout-" + this.catalog,"INPUT");
            };
 
            
            switch (this.version) {
                        case 1: {
                        }
                        case 2: {
 
                                    els=SC.N("A");
                                    for (var i=0,c=els.length;i<c;i++) {
                                                if (els[i].hasChildNodes() && els[i].childNodes[0].nodeType==1 && els[i].childNodes[0].tagName=="FONT" && els[i].innerHTML.indexOf("Keep Shopping")>0) {
                                                            this.keepShoppingUrl=els[i].href;
                                                            this.keepShoppingTag=els[i];
                                                            break;
                                                }
                                    }
                                                                        
                                    if (this.totalItems>0) {
                                                els=SC.N("B");
                                                for (var i=0,c=els.length;i<c;i++) {
                                                            if (els[i].childNodes.length==1 && els[i].childNodes[0].nodeType==3 && els[i].childNodes[0].data.toLowerCase()=="your shopping cart" && els[i].parentNode && els[i].parentNode.tagName=="FONT") {
                                                                        x=els[i];
                                                                        break;                                       
                                                            }
                                                }
                                                if (x) {
                                                            y=x.parentNode;
                                                            while (y!=null && y.tagName!="TABLE") {
                                                                        y=y.parentNode;            at++;
                                                                        if (at==5) y=null;
                                                            }
                                                            if (y) {
                                                                        tbl=y;
                                                
                                                                        var rows=tbl.rows;
                                                                        
                                                                        if (rows[1].innerHTML.toLowerCase().indexOf("<b>options</b>")>0) {
                                                                                    hasOptions=true;
                                                                        }
                                                                        if (rows[1].innerHTML.toLowerCase().indexOf("<b>in stock</b>")>0) {
                                                                                    hasInStock=true;
                                                                        }
                                                                        
                                                                        for (var i=2,c=rows.length;i<c;i++) {
                                                                                    tr=rows[i];
                                                                                    
                                                                                    if (tr.cells.length>2) { 
                                                                                                els=SC.N("INPUT",tr);
                                                                                                if (!(els.length==1 && els[0].type=="image")) {
                                                                                                            var item=SC.Parser.createItem();
                                                                                                            els=SC.N("A",tr);
                                                                                                            for (var j=0;j<els.length;j++) {
                                                                                                                        z=els[j];
                                                                                                                        if (z.href.startWith("http://order.store.yahoo.com/cgi") && z.href.indexOf("&delete-")>0) {
                                                                                                                                    item.removeTag=z;
                                                                                                                        } else {
                                                                                                                                    els1=SC.N("IMG",z);
                                                                                                                                    if (els1) {
                                                                                                                                                if (els1.length==0) {
                                                                                                                                                            els1=SC.N("FONT",z);
                                                                                                                                                            if (els1 && els1.length==1 && els1[0].hasChildNodes()) {
                                                                                                                                                                        item.name=els1[0].innerHTML;                                                                                                                                        
                                                                                                                                                            };          
                                                                                                                                                            item.url=z.href;
                                                                                                                                                            if (item.url.lastIndexOf("/")>0) {
                                                                                                                                                                        item.id=item.url.substring(item.url.lastIndexOf("/")+1);
                                                                                                                                                                        if (item.id.indexOf(".h")>0) {
                                                                                                                                                                                    item.id=item.id.substring(0,item.id.indexOf(".h"));
                                                                                                                                                                        }
                                                                                                                                                            }
                                                                                                                                                } else {
                                                                                                                                                            if (els1.length==1) {
                                                                                                                                                                        item.img=els1[0].src;
                                                                                                                                                                        item.imgTag=els1[0];
                                                                                                                                                            }
                                                                                                                                                }
                                                                                                                                    } 
                                                                                                                        }
                                                                                                            }
                                                                                                            els=SC.N("INPUT",tr);
                                                                                                            for (var j=0;j<els.length;j++) {
                                                                                                                        if (els[j].type=="text") {
                                                                                                                                    item.quantityTag=els[j];
                                                                                                                                    item.quantity=els[j].value;
                                                                                                                                    break;
                                                                                                                        }           
                                                                                                            }
                                                                                                            
                                                                                                            td=tr.cells[hasOptions ? 2 : 1];
                                                                                                            els=SC.N("FONT",td);
                                                                                                            
                                                                                                            if (els && els.length==1 && els[0].hasChildNodes() && els[0].childNodes[0].nodeType==3) 
                                                                                                                        item.price=SC.parseFloat(els[0].childNodes[0].data);
                                                                                                            
                                                                                                            if (hasOptions) {
                                                                                                                        td=tr.cells[1];
                                                                                                                        els=SC.N("FONT",td);
                                                                                                                        if (els && els.length==1 && els[0].hasChildNodes() && els[0].childNodes[0].nodeType==3) 
                                                                                                                                    item.options=els[0].childNodes[0].data;
                                                                                                            }
                                                                                                            if (hasInStock) {
                                                                                                                        td=tr.cells[hasOptions ? 4 : 3];
                                                                                                                        els=SC.N("FONT",td);
                                                                                                                        if (els && els.length==1 && els[0].hasChildNodes() && els[0].childNodes[0].nodeType==3) 
                                                                                                                                    item.instock=els[0].childNodes[0].data;
                                                                                                            }
                                                                                                            this.items.push(item);
                                                                                                }                                                                                               
                                                                                    }
                                                                        }
                                                            }
                                                };
                                    }
                                    break;
                        };          
                        case 3:
                        
                                    this.catalog=SC.getInputValueByName("ysco_key_store_id","INPUT","hidden");
                                    this.checkOutTag=SC.getInputByName("eventName.opContinueEvent","INPUT");
            
                                    if (this.checkOutTag==null) {
                                    
                                                this.checkOutTag=SC.getInputByName("eventName.cartContinueEvent","INPUT","button");
                                    }
                                    els=SC.N("A");
                                    for (var i=0,c=els.length;i<c;i++) {
                                                if (els[i].hasChildNodes()) {
                                                            if (els[i].childNodes[0].nodeType==3 && els[i].childNodes[0].data.toLowerCase()=="keep shopping") {
                                                                        this.keepShoppingUrl=els[i].href;
                                                                        this.keepShoppingTag=els[i];
                                                                        break;
                                                            };
                                                }
                                    }
            
                                    els=SC.getByClassName("ys_basket","TABLE",null,true);
                                    
                                    if (els.length>0) {
                                                tbl=els[0];
                                                for (var i=1,c=tbl.rows.length;i<c;i++) {
                                                            tr=tbl.rows[i];
                                                            
                                                            els=SC.N("TH",tr);
                                                            
                                                            if (els && els.length>0) {
                                                            
                                                                        if (tr.innerHTML.toLowerCase().indexOf("<b>options</b>")>0) {
                                                                                    hasOptions=true;
                                                                        }
                                                                        if (tr.innerHTML.toLowerCase().indexOf("<b>in stock</b>")>0) {
                                                                                    hasInStock=true;
                                                                        }
                                                            
                                                            } else {
                                                                        if (tr.cells.length>3) {
                                                                        
                                                                                    var item=SC.Parser.createItem();
                                                                        
                                                                                    els=SC.N("A",tr);
                                                                                    for (var j=0;j<els.length;j++) {
                                                                                                z=els[j];
                                                                                                if (z.href!=null && z.href.indexOf("order.store.yahoo.net/ymix/") && z.href.indexOf("removeEvent")>0) {
                                                                                                            item.removeTag=z;
                                                                                                } else {
                                                                                                            els1=SC.N("IMG",z);
                                                                                                            if (els1 && els1.length==0) {
                                                                                                                        if (z.hasChildNodes() && z.childNodes[0].nodeType==3 && z.childNodes[0].data=="[remove]") {
                                                                                                                                    item.removeTag=z;
                                                                                                                        } else {
                                                                                                                                    if (z.hasChildNodes() && z.childNodes[0].nodeType==3)
                                                                                                                                                item.name=z.childNodes[0].data;                                                                                                                                                
                                                                                                                                    item.url=z.href;
                                                                                                                                    if (item.url.lastIndexOf("/")>0) {
                                                                                                                                                item.id=item.url.substring(item.url.lastIndexOf("/")+1);
                                                                                                                                                if (item.id.indexOf(".h")>0) {
                                                                                                                                                            item.id=item.id.substring(0,item.id.indexOf(".h"));
                                                                                                                                                }
                                                                                                                                    }           
                                                                                                                        }
                                                                                                            } else {
                                                                                                                        if (els1.length==1) {
                                                                                                                                    item.img=els1[0].src;
                                                                                                                                    item.imgTag=els1[0];
                                                                                                                        }
                                                                                                            }
                                                                                                } 
                                                                                    }
                                                                        
                                                                                    els=SC.N("INPUT",tr);
                                                                                    for (var j=0;j<els.length;j++) {
                                                                                                if (els[j].type=="text") {
                                                                                                            item.quantityTag=els[j];
                                                                                                            item.quantity=els[j].value;
                                                                                                            break;
                                                                                                }           
                                                                                    }
                                                                        
                                                                                    for (var j=0;j<tr.cells.length;j++) {
                                                                                                if (tr.cells[j].className.indexOf("ys_unitPrice")>=0 && tr.cells[j].hasChildNodes()) {
                                                                                                            if(tr.cells[j].childNodes[0].data.indexOf('$') > -1){
																												item.price=tr.cells[j].childNodes[0].data.substring(1).replace(',','');
																											}else{
																												item.price=tr.cells[j].childNodes[0].data.replace(',','');
																											}
                                                                                                            break;
                                                                                                }                                                                                               
                                                                                    }
                                                                                    
                                                                                    this.items.push(item);
                                                                        } else {
                                                                                    if (tr.innerHTML.toLowerCase().indexOf("total:")>0) {
                                                                                                if (tr.cells.length==2 && tr.cells[1].hasChildNodes() && tr.cells[1].childNodes[0].nodeType==3) {
																											if(tr.cells[1].childNodes[0].data.indexOf('$') > -1){
																												this.total=tr.cells[1].childNodes[0].data.substring(1).replace(',','');
																											}else{
																												this.total=tr.cells[1].childNodes[0].data.replace(',','');
																											}
                                                                                                            if (this.total==null) {
                                                                                                                        this.total=0;
                                                                                                                        for (var i=0;i<this.items.length;i++) {
                                                                                                                                    if (this.items[i].price!=null && this.items[i].quantity!=null) {
                                                                                                                                                this.total=this.total + this.items[i].price * this.items[i].quantity;
                                                                                                                                    };
                                                                                                                        }
                                                                                                            }
                                                                                                }
                                                                                    }
																					if (tr.innerHTML.toLowerCase().indexOf("subtotal:")>0) {
                                                                                                if (tr.cells.length==2 && tr.cells[1].hasChildNodes() && tr.cells[1].childNodes[0].nodeType==3) {
																										if(tr.cells[1].childNodes[0].data.indexOf('$') > -1){
                                                                                                            this.subtotal=tr.cells[1].childNodes[0].data.substring(1).replace(',','');
																										}else{
																											this.subtotal=tr.cells[1].childNodes[0].data.replace(',','');
																										}
                                                                                                }
                                                                                    }
                                                                        }
                                                            }                                                           
                                                }
                                    }
                        
                                    break;
            }
            
            if (this.onComplete)
                        this.onComplete();
}
 
SC.Parser.Confirmation=function(variable, v) {
            var x=new SC.Parser();
            
            x.variable=variable;
            x.compoundNames=false;
            
            x.version=(v==null) ? SC.Parser.tryConfirmationVersion() : v;
            x.orderNumber=null;
            x.shippingFee=null;
            x.taxFee=null;
            
            x.shipTo=null;
            x.shipAddress1=null;
            x.shipAddress2=null;
            x.shipCity=null;
            x.shipState=null;
            x.shipZip=null;
            x.shipCountry="US";
 
            x.parse=SC.Parser.parse;
            x.parserFunc=SC.Parser.Confirmation.doParse;
            
            return x;
}
 
SC.Parser.Confirmation.doParse=function() {
            var x,y,z,at;
            var tbl,td,tr;
            var els,els1;
 
            at=0;
            x=null;
                                    
            switch (this.version) {
                        case 1:
                                    break;
                        case 2:
                        
                                    this.orderNumber=SC.getInputValueByName("oid");
                                    
                                    els=SC.N("B");
                                    for (var i=0,c=els.length;i<c;i++) {
                                                if (els[i].childNodes.length==1 && els[i].childNodes[0].nodeType==3 && els[i].childNodes[0].data.toLowerCase()=="your order" && els[i].parentNode && els[i].parentNode.tagName=="FONT") {
                                                            x=els[i];
                                                            break;                                       
                                                }
                                    }
                                    if (x) {
                                                y=x.parentNode;
                                                while (y!=null && y.tagName!="TABLE") {
                                                            y=y.parentNode;            
                                                            at++;
                                                            if (at==6) y=null;
                                                }
                                                if (y) {
                                                            tbl=y;
                                                            
                                                            for (var i=3,c=tbl.rows.length;i<c;i++) {
                                                                        tr=tbl.rows[i];
                                                                        td=null;
                                                                        if (tr.innerHTML.indexOf(">Shipping:<")>0 || tr.innerHTML.indexOf(">Tax:<")>0 || tr.innerHTML.indexOf(">Total:<")>0) {
                                                                                    if (tr.cells.length>1) 
                                                                                                td=tr.cells[tr.cells.length-2];
                                                                                    
                                                                                    if (td) {
                                                                                                els=SC.N("FONT",td);
                                                                                                
                                                                                                for (var j=0;j<els.length;j++) {
                                                                                                            if (els[j].hasChildNodes() && (els[j].childNodes[0].nodeType==3 || els[j].childNodes[0].nodeType==1 && els[j].childNodes[0].tagName=="B")) {
                                                                                                                        if (tr.innerHTML.indexOf(">Shipping:<")>0) 
                                                                                                                                    this.shippingFee=SC.parseFloat(els[j].childNodes[0].data);
                                                                                                                        else if (tr.innerHTML.indexOf(">Tax:<")>0)
                                                                                                                                    this.taxFee=SC.parseFloat(els[j].childNodes[0].data);
                                                                                                                        else if (tr.innerHTML.indexOf(">Total:<")>0)
                                                                                                                                    this.total=SC.parseFloat(els[j].childNodes[0].childNodes[0].data);
                                                                                                                        
                                                                                                            }
                                                                                                }                       
                                                                                    }           
                                                                        } else {
                                                                                    if (tr.cells.length==7) {
                                                                                    
                                                                                                var item=SC.Parser.createItem();
                                                                                    
                                                                                                td=tr.cells[1];                 els=SC.N("FONT",td);
                                                                                                
                                                                                                for (var j=0;j<els.length;j++) 
                                                                                                            if (els[j].hasChildNodes() && els[j].childNodes[0].nodeType==3) {
                                                                                                                        item.quantity=els[j].childNodes[0].data;
                                                                                                                        break;
                                                                                                            }
                                                                                                
                                                                                                var hasOptions=false;
                                                                                                
                                                                                                if (td.innerHTML.indexOf("<BR>")>0) {
                                                                                                            hasOptions=true;
                                                                                                }           
                                                                                                
                                                                                                td=tr.cells[3];                 els=SC.N("FONT",td);
                                                                                                for (var j=0;j<els.length;j++) 
                                                                                                            if (els[j].hasChildNodes() && els[j].childNodes[0].nodeType==3) {
                                                                                                                        if (j==2) {
                                                                                                                                    if (this.compoundNames && els[j].childNodes[0].data.indexOf(":")>0) {
                                                                                                                                                item.category=els[j].childNodes[0].data.substring(0,els[j].childNodes[0].data.indexOf(":"));
                                                                                                                                                item.name=els[j].childNodes[0].data.substring(els[j].childNodes[0].data.indexOf(":"));
                                                                                                                                    } else {
                                                                                                                                                item.name=els[j].childNodes[0].data;
                                                                                                                                                item.category="";
                                                                                                                                    }
                                                                                                                        }           
                                                                                                                        else 
                                                                                                                                    item.options=els[j].childNodes[0].data;    
                                                                                                                        if (hasOptions)
                                                                                                                                    break;
                                                                                                            }           
                                                                                                
                                                                                                
                                                                                                            
                                                                                                td=tr.cells[5];                 els=SC.N("FONT",td);
                                                                                                for (var j=0;j<els.length;j++) 
                                                                                                            if (els[j].hasChildNodes() && els[j].childNodes[0].nodeType==3) {
                                                                                                                        item.price=els[j].childNodes[0].data;
                                                                                                                        break;
                                                                                                            }           
                                                                                                
                                                                                                this.items.push(item);
                                                                                    }                                                                                   
                                                                        }
                                                            }
                                                }
                                    }
                                    break;
                        case 3:
                        
                                    this.total=orderTotal;
                                    this.orderNumber=orderNum;
                                    
                                    if (window.items && window.ids) {
                                    
                                                for (var i=0;i<numOfItems;i++) {
                                                            var item=SC.Parser.createItem();
                                                            
                                                            if (ids[i]) item.id=ids[i];
 
                                                            if (this.compoundNames && items[i]) {
                                                                        item.name=items[i].substring(items[i].indexOf(":")+1).trim();                                                                                              
                                                                        item.category=items[i].substring(0,items[i].indexOf(":"));
                                                            } else {
                                                                        if (items[i]) item.name=items[i];
                                                                        item.category="";
                                                            }
                                                            
                                                            if (codes[i]) item.code=codes[i];
                                                            if (qtys[i]) item.quantity=qtys[i];
                                                            if (price[i]) item.price=price[i];
                                                            
                                                            this.items.push(item);
                                                }
                                                                        
                                    };          
                                    els=SC.N("TD");
                                    for (var i=0;i<els.length;i++) {
                                                if (els[i].innerHTML.trim()=="Shipping:") {
                                                            x=els[i].nextSibling;
                                                            if (x!=null) {
                                                                        this.shippingFee=SC.parseFloat(x.innerHTML);
                                                            }
                                                }
                                                if (els[i].innerHTML.trim()=="Tax:") {
                                                            x=els[i].nextSibling;
                                                            if (x!=null) {
                                                                        this.taxFee=SC.parseFloat(x.innerHTML);
                                                            }
                                                }
                                    }
                                    
                                    x=SC.F("ys_shipToAddress");
                                    
                                    if (x!=null) {
                                                els=SC.N("LI",x);
                                                for (var i=0;i<els.length;i++) {
                                                            switch (els[i].className) {
                                                                        case "ys_name": this.shipTo=els[i].innerHTML; break;
                                                                        case "ys_address1": this.shipAddress1=els[i].innerHTML; break;
                                                                        case "ys_address2": this.shipAddress2=els[i].innerHTML; break;
                                                                        case "ys_csz": 
                                                                                    y=els[i].innerHTML.trim();
                                                                                    a=y.split(" ");
                                                                                    if (a.length>2) {
                                                                                                this.shipCity=y.substring(0,y.lastIndexOf(", ")); 
                                                                                                this.shipState=a[a.length-2];
                                                                                                this.shipZip=a[a.length-1];                                                                                                
                                                                                    } else {
                                                                                                this.shipCity=els[i].innerHTML; 
                                                                                                this.shipState=""; 
                                                                                                this.shipZip=""; 
                                                                                    }                                                                                   
                                                                                    break;
                                                                        case "ys_country":         
                                                                                    if (els[i].innerHTML!="") {
                                                                                                this.shipCountry=els[i].innerHTML.split(" ")[0];      
                                                                                    }
                                                                                    
                                                                        break;
                                                            }
                                                }
                                    }
                                    
                                    break;
            }
            if (this.onComplete)
                        this.onComplete();
}
 
SC.Parser.Shipping=function(v) {
}
 
SC.Parser.Billing=function(v) {
}
