﻿    function loadPrices(priceId, productId, categoryId)
    {
        $("#price" + priceId).hide();
        $("#priceButton" + priceId).hide();
	    xhrRequest("ProductPriceFragment.aspx?product_id=" + productId + "&price_id=" + priceId + "&category_id=" + categoryId, pricesHandler, priceId);
        return false;
    }
    
    function hidePrices(priceId)
    {
        $("#priceButton" + priceId).show();
        $("#price" + priceId).hide("slow");
    }


    function pricesHandler(xhr,priceId)
    {
	    if (xhr.readyState == 4 && xhr.status == 200)
	    {
		    var priceElement = document.getElementById("price" + priceId);
		    priceElement.innerHTML = xhr.responseText;
		    $("#price" + priceId).show("slow");
	    }
    }

    function xhrRequest(url, handler, state)
    {
	    var req = false;
	    // branch for native XMLHttpRequest object
	    if(window.XMLHttpRequest && !(window.ActiveXObject)) 
	    {
		    try { req = new XMLHttpRequest(); }
		    catch(e) { req = false; } }
	    // branch for IE/Windows ActiveX version
	    else if(window.ActiveXObject) 
	    {
		    try { req = new ActiveXObject("Msxml2.XMLHTTP"); }
		    catch(e) {
			    try { req = new ActiveXObject("Microsoft.XMLHTTP"); }
			    catch(e) { req = false; } } 
		}
		
	    if(req) 
	    {
		    //req.onreadystatechange = function() { handler(req,state); };
		    req.open("GET", url, false);
		    req.send("");
		    return handler(req,state);
	    }
    }
    
    function categoryChanged(url, id)
    {
        location.href = url + '?category=' + dwr.util.getValue(id);
    }
    
    function brandChanged(url, id, category)
    {
        location.href = url + '?brand=' + dwr.util.getValue(id) + "&category_id=" + category;
    }
    
    function compareProducts(url)
    {
	    var form = document.forms[0];
	    if (!form) return;

	    var checkedProducts = 0;
	    var products = "";
	    for (var fieldNum = 0; fieldNum < form.elements.length; fieldNum++)
	    {
		    var field = form.elements[fieldNum];
		    if (field.type == 'checkbox' && field.name == 'compare' && field.checked) 
		    {
		        checkedProducts++;
		        if (products == "") products = field.value;
		        else products += "," + field.value;
		    }
	    }
    	
	    if (checkedProducts < 2)
	    {
		    alert("Please select at least 2 products to compare.");
		    return;
	    }
	    
	    location.href = url + "&compare=" + products;
    }
    
    function handleNoPreferenceCheckbox(checkbox)
    {
        var elementType;

        if ( checkbox.length == undefined )
        {
            elementType = checkbox.type;
        }
        else
        {
            elementType = checkbox[0].type;
        }
        
        if (elementType == "radio")
        {
            return;
        }
    	
        if ((checkbox.id == "0" || checkbox.id.indexOf("nopref") > -1) && checkbox.checked)
        {
	        // user just turned "no preference" on; uncheck all others
	        for (var fieldNum = 0; fieldNum < checkbox.form.elements.length; ++fieldNum)
	        {
		        var field = checkbox.form.elements[fieldNum];
		        //alert("field: "  + field.name + " checkbox: " + checkbox.name);
		        if (field.type != 'checkbox' || field.name != checkbox.name) continue;
		        if (field.id && (field.id == "0" || field.id.indexOf("nopref") > -1)) continue;

		        field.checked = false;
	        }
        }
        else
        {
	        // check "no preference" if no other checkboxes are checked;
	        // as a side effect, it's not possible to uncheck "no preference" if all others are unchecked
	        var shouldCheck = true;
	        var noPrefCheckbox = null;

	        for (var fieldNum = 0; fieldNum < checkbox.form.elements.length; ++fieldNum)
	        {
		        var field = checkbox.form.elements[fieldNum];
		        if (field.type != 'checkbox' || field.name != checkbox.name) continue;
    			
		        if (field.id && (field.id == '0' || field.id.indexOf("nopref") > -1))
		        {
			        noPrefCheckbox = field;
			        continue;
		        }

		        if (field.checked) shouldCheck = false;
	        }
    		
	        if (noPrefCheckbox) noPrefCheckbox.checked = shouldCheck;
        }
    }	
    
    function MM_openBrWindow(theURL,winName,features) { //v2.0
      window.open(theURL,winName,features);
    }
    
	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}

	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}

	function MM_findObj(n, d) { //v4.0
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && document.getElementById) x=document.getElementById(n); return x;
	}

	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}