SC.Parser=function() {
	this.items=new Array();
	
	this.version=null;
	this.variable=null;
	
	this.catalog=null;
	this.total=null;
	this.basket=null;
	this.entropy=null;
	
	this.keepShoppingUrl=null;
	this.keepShoppingTag=null;

	this.onComplete=null;
	this.onError=null;
	
	this.parseOnLoad=false;
}

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.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");
	
			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()) {
									item.price=SC.parseFloat(tr.cells[j].childNodes[0].data);
									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) {
									this.total=SC.parseFloat(tr.cells[1].childNodes[0].data);
									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;
											};
										}
									}
								}
							}
						}
					}					
				}
			}
		
			break;
	}
	
	if (this.onComplete)
		this.onComplete();
}

SC.Parser.Confirmation=function(v) {
	var x=new SC.Parser();
	
	x.version=(v==null) ? SC.Parser.tryCartVersion() : v;
	x.orderNumber=null;
	x.shippingFee=null;
	x.taxFee=null;

	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) 
											item.name=els[j].childNodes[0].data;
										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 (items[i]) item.name=items[i];
					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);
				}
						
			};			
			break;
	}
	if (this.onComplete)
		this.onComplete();
}

SC.Parser.Shipping=function(v) {
}

SC.Parser.Billing=function(v) {
}



