//main client-side product page functionality object
	var prVarView = null
	
	function ProductVariantsView(){
		this.err = {}
		this.err.code = 0;
		this.err.desc = "";
		this.err.source = "";
		
		
		try{
			this.xmlData = document.getElementById("ProductVariantsData");
			this.ProductID = PageProductID;
			this.VariantID = PageVariantID;
			this.VariantIsValid = true;
			this.MSG = MSG;
			this.propNames = [];
			
			//alert(this.xmlData.documentElement.xml)
			
			for(var i = 1; i < NUMBER_OF_PROPERIES; i++){
				var elem = document.getElementById("variantPropertyLookUp_prop" + i)
				if(elem){
					this.propNames.push("prop"+i)	
				}
			}
			
			//alert(this.propNames.join(""))
		}
		catch(e){
			this.err.code = 1;
			this.err.desc = e.description;
			this.err.source = "ProductVariantsView";
		}
		
		
	}
	
	ProductVariantsView.prototype.dbg = function(){
		try{
			alert("ERROR\ncode : " + this.err.code + "\nsource : " + this.err.source + "\ndesc : " + this.err.desc)
		}
		catch(e){}
	}
	
	ProductVariantsView.prototype.addedMsg = function(){
		try{
			var inp = document.getElementById("prCheckoutView_mode")
			if(inp){
				if(inp.value == "ADDED_TO_BASKET"){
					alert(this.MSG.CLIENT_MSG_ITEM_ADDED_TO_BASKET)
					document.getElementById("prCheckoutView_mode").value=""
				}
				if(inp.value == "ADDED_TO_WISHLIST"){
					alert(this.MSG.CLIENT_MSG_ITEM_ADDED_TO_WISHLIST)
					document.getElementById("prCheckoutView_mode").value=""
				}
				if(inp.value == "EXIST_IN_BASKET"){
					alert(this.MSG.CLIENT_MSG_ITEM_EXIST_IN_BASKET)
					document.getElementById("prCheckoutView_mode").value=""
				}
				if(inp.value == "EXIST_IN_WISHLIST"){
					alert(this.MSG.CLIENT_MSG_ITEM_EXIST_IN_WISHLIST)
					document.getElementById("prCheckoutView_mode").value=""
				}
			}
		}
		catch(e){}
	}
	
	ProductVariantsView.prototype.setVariantID = function(varId){
		if(this.err.code > 0) return
		try{
			this.VariantID = varId;
			this.VariantIsValid = true
			this.setPriceRemarks()
		}
		catch(e){
			this.err.source = "setVariantID"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.setPriceRemarks = function(){
		if(this.err.code > 0) return
		try{
			var div = document.getElementById("divPriceRemarksMsg")
			div.style.display="none"
			div.innerHTML = ""
			if(!this.VariantIsValid){
				div.className = "price_remarks1"
				div.innerHTML = this.MSG.CLIENT_MSG_PROPERTIES_SET_NOT_VALID;
				div.style.display=""
			}
			else{
				var priceRemarksNode = this.xmlData.documentElement.selectSingleNode("Table1[VariantId/text()='"+this.VariantID+"']/price_remarks")
				if(priceRemarksNode && priceRemarksNode.text!=""){
					div.className = "price_remarks2"
					div.innerHTML = priceRemarksNode.text;
					div.style.display=""
				}
			}
		}
		catch(e){
			this.err.source = "setVariantID"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.showExtraPictures = function(){
		if(this.err.code > 0) return
		try{
			if(!this.VariantIsValid){
				alert(this.MSG.CLIENT_MSG_VARIANT_NOT_EXIST)
				return
			}
			var url = EXTRA_PICTURES_URL + "?lang="+LANG+"&ProductID="+this.ProductID+"&VariantID="+this.VariantID
			var winFeatures =  "dialogHeight:550px;\
								dialogWidth:540px;\
								center:yes;\
								status:no;\
								scroll:yes;\
								resizable:yes;";
			var popupWin=window.showModelessDialog(url,self,winFeatures);
		}
		catch(e){
			this.err.source = "showExtraPictures"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.showVariantDetails = function(){
		if(this.err.code > 0) return
		try{
		
			//payments number
			var paymNum = 1
			var variantNode = this.xmlData.documentElement.selectSingleNode("Table1[VariantId/text()='"+this.VariantID+"']")
			
			// big Pictures : 
			var bigPic = ""
			try{
				bigPic = variantNode.selectSingleNode("big_picture1").text
				if(bigPic == "") throw new Error()
				var path1 = bigPic.substring(0,bigPic.lastIndexOf("/"))
				var path2 = path1.substring(path1.lastIndexOf("/")+1,path1.length)
				bigPic = bigPic.replace("/"+path2+"/","/"+path2+"/thumbs_product_main/")
			}
			catch(e){
				bigPic = IMAGES_PATH + "/trans.gif"
			}
			document.getElementById("prImageView_imgVariantBigPicture").src = bigPic 
			
			// extra pictures :
			var extraPicLength = 0
			try{
				var xml = new ActiveXObject("Microsoft.XMLDOM");
				xml.async = false
				xml.loadXML(variantNode.selectSingleNode("extra_pictures1").text)
				extraPicLength = xml.documentElement.selectNodes("ROW[@big_picture!='']").length
			} 
			catch(e){}
			if(extraPicLength > 0){
				document.getElementById("prImageView_ancAdditionalImages").style.visibility = "visible"
				document.getElementById("prImageView_imgArrow").style.visibility = "visible"
			}
			else{
				document.getElementById("prImageView_ancAdditionalImages").style.visibility = "hidden"
				document.getElementById("prImageView_imgArrow").style.visibility = "hidden"
			}
			
			// delivery time
			try{
				var delTime = ""
				delTime = variantNode.selectSingleNode("delivery_time").text
				if(delTime == "") throw new Error()
				document.getElementById("divDeliveryTime").style.display = ''
				document.getElementById("divDeliveryTime").innerHTML = DELIVERY_TIME_MSG + delTime
			}
			catch(e){
				var obdt = document.getElementById("divDeliveryTime")
				if(obdt) obdt.style.display = 'none'
			}
			
			// variant spec
			try{
				var varSpec = variantNode.selectSingleNode("spec").text
				if(varSpec == "") throw new Error()
				document.getElementById("divVariantSpec").innerHTML = varSpec;
			}
			catch(e){
				var obvs = document.getElementById("divVariantSpec")
				if(obvs) obvs.innerHTML = "";
			}
			
			// payment conditions
			try{
				paymNum = parseInt(variantNode.selectSingleNode("payments_num").text)
				if(paymNum < 2) throw new Error()
				document.getElementById("divPaymentsConditions").innerHTML = PAYMENT_CONDITIONS_MORE.replace("%1",paymNum)
			}
			catch(e){
				paymNum = 1
				document.getElementById("divPaymentsConditions").innerHTML = PAYMENT_CONDITIONS_ONE
			}
			
			// variant selects
			for(var i = 1; i < NUMBER_OF_PROPERIES; i++){
				var propElem = variantNode.selectSingleNode("prop"+i)
				if(!propElem) continue
				var sel = document.getElementById("variantPropertyLookUp_prop"+i)
				if(!sel) continue
				var val = propElem.text
				for(var j = 0; j < sel.options.length; j++){
					var op = sel.options[j]
					if(val == op.value){
						op.selected = true
						break
					}
				}
			}
			
			// market price
			try{
				var markPrice = variantNode.selectSingleNode("market_price").text
				if(markPrice=="" || markPrice=="0"){
					document.getElementById("prPricesView_tdMarketPrice").innerHTML = "&nbsp;"
				}
				else{
					document.getElementById("prPricesView_tdMarketPrice").innerHTML =  MARKET_PRICE_LABEL
					document.getElementById("spanMarketPrice").innerHTML =PriceFormat(markPrice).replace(/\.00$/,'')
				}
				
			}
			catch(e){
			}
			//tdSitePriceLabel
			try{
				var basePrice = variantNode.selectSingleNode("base_price").text
				// = PRODUCT_DELIVERY_COST1 + " : " + PriceFormat(price_new).replace(/\.00$/,'')+ " "+ CURRENCY_LABEL; 
				document.getElementById("prPricesView_tdSitePriceLabel").innerHTML = SITE_PRICE +" <img src='" + PRODUCT_PRICE_IMG + "' style='text-align: right; vertical-align: bottom;' /> " +  PriceFormat(basePrice).replace(/\.00$/,'') +" "+ CURRENCY_LABEL;
			}
			catch(e){
				//alert(e.description)
			}
			
			//tdSiteDelivery
			try{
				
				if(1*DELIVERY_COST>0){
					var basePrice = variantNode.selectSingleNode("base_price").text
					var price_new = 0
				
					if(Number(basePrice)+Number(DELIVERY_COST)>0)price_new = Number(basePrice)+Number(DELIVERY_COST)
					document.getElementById("prPricesView_tdSiteDelivery").innerHTML = PRODUCT_DELIVERY_COST1 + " : " + PriceFormat(price_new).replace(/\.00$/,'')+ " "+ CURRENCY_LABEL; 
				}else{
					document.getElementById("prPricesView_tdSiteDelivery").innerHTML = PRODUCT_DELIVERY_COST_INIT;
				}
			}
			catch(e){
				//alert(e.description)
			}
			
			
			
			// base(site) price
			try{
				var basePrice = variantNode.selectSingleNode("base_price").text
				
				if(paymNum == 1){
					//document.getElementById("prPricesView_tdSitePriceValue").innerHTML = "<span class='c0 bold' dir='ltr'>" + PriceFormat(basePrice).replace(/\.00$/,'') + "</span> " + CURRENCY_LABEL;
					document.getElementById("prPricesView_tdSitePriceValue").innerHTML = "<span class='c0 bold' dir='ltr'>" + PriceFormat(basePrice).replace(/\.00$/,'') + "</span> " + CURRENCY_LABEL;
				}
				else{
					
					//document.getElementById("prPricesView_tdSitePriceValue").innerHTML= "<span class='c0 bold' dir='ltr'>" + paymNum + " x " + PriceFormat(Number(basePrice)/paymNum).replace(/\.00$/,'') + " = " + PriceFormat(Number(basePrice)).replace(/\.00$/,'') + "</span> " + CURRENCY_LABEL;
					//document.getElementById("prPricesView_tdSitePriceValue").innerHTML= "<span class='bold' dir='ltr'>"+ PriceFormat(Number(basePrice)/paymNum).replace(/\.00$/,'') + " x " + paymNum + " = " + PriceFormat(Number(basePrice)).replace(/\.00$/,'') + "</span> " + CURRENCY_LABEL;
					document.getElementById("prPricesView_tdSitePriceValue").innerHTML= "<div>"+PAYMENT_NUMBER+"<span class='bold' dir='ltr'>"+ paymNum + "</span> "+PAYMENTS_NUMBER_POSTFIX+"</div>";
					//tdSitePriceValue.InnerHtml = "<div>" + dic.GetValue("PRODUCT_PAYMENTS_NUMBER") + "<span class='bold' dir='ltr'>" +  paymentsNumber.ToString() +"</span> " + dic.GetValue("PAYMENTS_NUMBER_POSTFIX") +"</div>";
				}
			}
			catch(e){
				//alert(e.description)
			}
		}
		catch(e){
			this.err.source = "showVariantDetails"
			this.err.desc = e.description
		}
	}
	

	
	ProductVariantsView.prototype.showVariantDetailsByProperty = function(sPropName,sPropCode){
		if(this.err.code > 0) return
		try{
			var xPath = "Table1"
			var first = true
			//this.xmlData.documentElement.selectSingleNode("Table1[VariantId/text()='"+this.VariantID+"']")
			for(var i = 0; i < this.propNames.length; i++){
				var propName = this.propNames[i]
				var propVal = document.getElementById("variantPropertyLookUp_" + propName).value
				if(propVal == "") continue
				if(first)
					xPath += "["
				else
					xPath += " and "
				
				xPath += propName+"/text()='"+propVal+"'"
				
				first = false
			}
			if(!first) xPath += "]"
			var VariantNode = this.xmlData.documentElement.selectSingleNode(xPath)
			if(VariantNode){
				
				this.setVariantID(VariantNode.selectSingleNode("VariantId").text)
				this.showVariantDetails()
			}
			else{
				
				this.VariantIsValid = false
				this.setPriceRemarks()
			}
		}
		catch(e){
			this.err.source = "showVariantDetailsByProperty"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.addToBasket = function(){
		if(this.err.code > 0) return
		try{
			if(this.VariantIsValid){
				//var url = CART_URL + "&ProductID="+this.ProductID+"&VariantID="+this.VariantID+"&mode=add";
				//window.location.href = url;
				
				document.getElementById("prCheckoutView_mode").value="ADD_TO_BASKET";
				document.getElementById("prCheckoutView_ProductID").value=this.ProductID;
				document.getElementById("prCheckoutView_VariantID").value=this.VariantID;
				
				submitForm();
			}
			else{
				alert(this.MSG.CLIENT_MSG_VARIANT_NOT_EXIST)
			}
		}
		catch(e){
			this.err.source = "addToBasket"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.checkout = function(){
		if(this.err.code > 0) return
		try{
			if(this.VariantIsValid){
				//var url = PAYMENT_URL + "&ProductID="+this.ProductID+"&VariantID="+this.VariantID
				//window.location.href = url;
				
				document.getElementById("prCheckoutView_mode").value="GO_TO_PAYMENT";
				document.getElementById("prCheckoutView_ProductID").value=this.ProductID;
				document.getElementById("prCheckoutView_VariantID").value=this.VariantID;
				
				submitForm();
			}
			else{
				alert(this.MSG.CLIENT_MSG_VARIANT_NOT_EXIST)
			}
		}
		catch(e){
			this.err.source = "checkout"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.addToWishList = function(){
		if(this.err.code > 0) return
		try{
			if(this.VariantIsValid){
				document.getElementById("prCheckoutView_mode").value="ADD_TO_WISHLIST";
				document.getElementById("prCheckoutView_ProductID").value=this.ProductID;
				document.getElementById("prCheckoutView_VariantID").value=this.VariantID;
				
				submitForm();
			}
			else{
				alert(this.MSG.CLIENT_MSG_VARIANT_NOT_EXIST)
			}
		}
		catch(e){
			this.err.source = "addToWishList"
			this.err.desc = e.description
		}
	}
	
	ProductVariantsView.prototype.sendToFriend = function(){
		if(this.err.code > 0) return
		try{
			var win_features = "top=100,\
								left=100,\
								width=540,\
								height=380,\
								scrollbars=no,\
								toolbar=no,\
								resizable=no"
			var url = SEND_TO_FRIEND_URL + "&ProductID="+this.ProductID+"&VariantID="+this.VariantID
			var sendToAFriendWin = window.open(url,'sendToAFriendWin',win_features)
		}
		catch(e){
			this.err.source = "sendToFriend"
			this.err.desc = e.description
		}
		
		
	}
	

	
	ProductVariantsView.prototype.showPickupDetails = function(){
		if(this.err.code > 0) return
		try{
			if(!this.VariantIsValid){
				alert(this.MSG.CLIENT_MSG_VARIANT_NOT_EXIST)
				return
			}
			var url = PICKUP_URL + "&ProductID="+this.ProductID
			var winFeatures =  "dialogHeight:250px;\
								dialogWidth:440px;\
								center:yes;\
								status:no;\
								scroll:no;\
								resizable:no;";
			//window.open(url)
			var popupWin=window.showModelessDialog(url,self,winFeatures);
		}
		catch(e){
			this.err.source = "showPickupDetails"
			this.err.desc = e.description
		}
	}
	
	window.onload = function()
	{
		prVarView = new ProductVariantsView();
		prVarView.addedMsg();
		
	};
	
	document.onkeyup = function() { //F9
		if(event.keyCode==120) prVarView.dbg();
	}
	
	function changeAction(){
		var act = String(Form1.action)
		Form1.action = act.substring(0,act.indexOf("&url="))
	}
	
	function submitForm(){
		document.getElementById("btnSubmit").click()
	}
