if (window.XPathEvaluator) { 

    var xpath = new XPathEvaluator(); 

    var element = Element.prototype; 
    var attr = Attr.prototype; 
    var doc = Document.prototype; 

    delete element.text; 
    delete attr.text; 

    element.selectNodes = function (path) { 
        var result = xpath.evaluate(path, this, this.ownerDocument._ns, 7, null); 
        var i, nodes = []; 
        for (i=0; i<result.snapshotLength; i++) { 
            nodes[i] = result.snapshotItem(i); 
            nodes[i].text = nodes[i].firstChild ? nodes[i].firstChild.nodeValue : ""; 
        } 
        return nodes; 
    }; 

    element.selectSingleNode = function (path) { 
       var node = xpath.evaluate(path, this, this.ownerDocument._ns, 9, null).singleNodeValue; 
       dump('element.selectSingleNode(path): ' + path + '\n'); 
       if ( node != null ) node.text = node.firstChild ? node.firstChild.nodeValue : ""; 
       return node; 
    }; 

    doc.selectSingleNode = function (path) { 
        dump('doc.selectSingleNode(path): ' + path + '\n'); 
        var node = xpath.evaluate(path, this, this._ns, 9, null).singleNodeValue; 
        if ( node != null ) node.text = node.firstChild ? node.firstChild.nodeValue : ""; 
        return node; 
    }; 

    doc.selectNodes = function (path) { 
        var result = xpath.evaluate(path, this, this._ns, 7, null); 
        var i, nodes = []; 
        for (i=0; i<result.snapshotLength; i++) { 
            nodes[i] = result.snapshotItem(i); 
            nodes[i].text = nodes[i].firstChild ? nodes[i].firstChild.nodeValue : ""; 
        } 
        return nodes; 
    }; 

} 
var iCurrentOffer;
var xmlOffer
var timerID;
function startOfferTimer()
{
    if(timerID!=-1) {
          clearTimeout(timerID);
          timerID  = -1;
          document.getElementById("lbPause").className="play";
          //$get("lbPause").className="play";
     }
     else
     {
        timerID=0
         OfferTimer();
          document.getElementById("lbPause").className="pause";
         //$get("lbPause").className="pause";
     }
}
function OfferTimer()
{
     if(timerID!=-1)
     {
     GetOffer(1);
     timerID  = setTimeout("OfferTimer()", 5000);
     }
}    
function GetOffer(iMove) 
{
    iCurrentOffer+=iMove
    if(iCurrentOffer==sIds.length)iCurrentOffer=0
    if(iCurrentOffer==-1)iCurrentOffer=sIds.length-1
    if(sIds.length>0)
    {
    
        if(xmlOffer!=null)
        {
            sPath="//NewDataSet/Offers[@Offer_id="+sIds[iCurrentOffer]+"]"
            if(xmlOffer.selectNodes(sPath).length!=0)
              showOffer(xmlOffer.selectSingleNode(sPath))
            else
                WebService.GetOffer(sIds[iCurrentOffer],sGetOffer, FailedCallback,"XmlDocument")
            }
        else
            WebService.GetOffer(sIds[iCurrentOffer],sGetOffer, FailedCallback,"XmlDocument")
    }
}
function sGetOffer(result, userContext, methodName)
{
    if (userContext == "XmlDocument")
	{
        showOffer(result.documentElement.getElementsByTagName("Offers")[0])
        if(result.documentElement.getElementsByTagName("Make").length==0)
        {
            if(xmlOffer==null)
                xmlOffer=result
            else
                xmlOffer.documentElement.appendChild(result.documentElement.getElementsByTagName("Offers")[result.documentElement.getElementsByTagName("Offers").length-1])
        }
    }
}
function showOffer(readResult)
{
    var sOfferTypeName;
    sContent=sTemplate
    switch (lastOfferType){
        case 1:sOfferTypeName = "0% Finance";break;
        case 2:sOfferTypeName = "Insurance";break;
        case 3:sOfferTypeName = "Manufacturers";break;
        case 4:sOfferTypeName = "Finance";break;
        case 6:sOfferTypeName = "Saving on RRP";break;
        case 7:sOfferTypeName = "Motability";break;
        default:sOfferTypeName = "";break;
    }
    if(readResult!=null)
    {
    for(j=0;j<readResult.attributes.length;j++)
    {
		sVal=readResult.attributes[j].nodeValue
		if((readResult.attributes[j].name=='Make' || readResult.attributes[j].name=='Model') && sVal=='')sVal='_'
		if((readResult.attributes[j].name=='Make' || readResult.attributes[j].name=='Model'))sVal=sVal.replace(' ','_')
        sContent=sContent.replace(new RegExp('#'+readResult.attributes[j].name +'#', "g"),sVal)
    }
        sContent=sContent.replace(new RegExp('#OfferType#', "g"),sOfferTypeName.replace('%',''))
     }
     
     
    sContent=sContent.replace(new RegExp('#.+#', ""),'g')
    $get("dvOffer").innerHTML=sContent
    $get("ltPages").innerHTML='Offer <strong>'+(iCurrentOffer+1)+'</strong> of <strong>'+sIds.length +'</strong>'
    sMake=$get("OfferMake").value
    sModel=$get("ddModel").value

    sText='';sQS=''
    if (sMake != '')
    {
        sQS += sMake.replace(' ','_');
        sText += sMake + " ";
    }
    if (sModel != '')
    {
        sQS += "-"+sModel.replace(' ','_') ;
        sText += sModel + " ";
    }
    if (lastOfferType != '' && lastOfferType != "5")
    {
        sQS += "/?Type=" + lastOfferType;
        sText += sOfferTypeName + " ";
    }

    $get("aViewAllOffers").innerHTML="View all offers";
    $get("aViewAllOffers").href="/special-offers-car-sales/" + sQS;
     
	}

function FailedCallback(error)
{
    // Display the error.    
    var RsltElem = 
        $get("ResultId");
    
    alert("Service Error: " + error.get_message());
}
var lastOfferType,sTemplate
function MakeModel_Change()
{
	var offerId = $('#ddOfferType option:selected').val();
	if(offerId!=undefined && offerId!=''){
	    GetOfferMakeModel(offerId);
	}else{
	    GetOfferMakeModel(lastOfferType);
	}
}
function GetOfferMakeModel(sOfferType) 
{
    if(lastOfferType!=undefined)
        if(lastOfferType!=5 && $get("li"+lastOfferType)!=null)
        {
            liclass =$get("li"+lastOfferType).className
            $get("li"+lastOfferType).className=liclass.substring(0,liclass.indexOf(' '))
        }
    if(sTemplate==undefined)sTemplate=$get("dvOffer").innerHTML    
    if($get("li"+sOfferType))$get("li"+sOfferType).className+=' selected'
    sMake=$get("OfferMake").value
    sModel=$get("ddModel").value
    
    lastOfferType=sOfferType
    WebService.GetMakeModel(sMake,sModel,sOfferType,sGetOfferMakeModel, FailedCallback,"XmlDocument")
}
var sIds;
function sGetOfferMakeModel(result, userContext, methodName)
{
    iCurrentOffer=0
    sIds=new Array()
    readResult = result.documentElement.getElementsByTagName("Make");
    sMake=$get("OfferMake").value
    sModel=$get("ddModel").value
    if($get("OfferMake").options)
    {
        $get("OfferMake").options.length=0;
        $get("OfferMake").options[0]=new Option("Select a Make","")
        for(i=0;i<readResult.length;i++)
        {
            $get("OfferMake").options[i+1]=new Option(readResult[i].attributes[0].nodeValue,readResult[i].attributes[0].nodeValue)
            if(sMake==readResult[i].attributes[0].nodeValue)$get("OfferMake").options[i+1].selected=true
        }
    }
    readResult = result.documentElement.getElementsByTagName("Model");
    $get("ddModel").options.length=0;
    $get("ddModel").options[0]=new Option("Select a Model","")
    for(i=0;i<readResult.length;i++)
    {
        $get("ddModel").options[i+1]=new Option(readResult[i].attributes[0].nodeValue,readResult[i].attributes[0].nodeValue)
        if(sModel==readResult[i].attributes[0].nodeValue)$get("ddModel").options[i+1].selected=true
    }
    if($get("ddOfferType")!=null)
    {
      $get("ddOfferType").options.length=0;
      var elOptNew = document.createElement('option');
      elOptNew.text = "Select an Offer";
      elOptNew.value = "";
            try 
            {
                $get("ddOfferType").add(elOptNew, null); // standards compliant; doesn't work in IE
            }
            catch(ex) 
            {
                $get("ddOfferType").add(elOptNew); // IE only
            }
        readResult = result.documentElement.getElementsByTagName("OfferType");
        for(i=0;i<readResult.length;i++)
        {
          var elOptNew = document.createElement('option');
          elOptNew.text = readResult[i].attributes[1].nodeValue;
          elOptNew.value = readResult[i].attributes[0].nodeValue;
		  if(lastOfferType == readResult[i].attributes[0].nodeValue){
			  elOptNew.selected = "selected";
		  }
            try 
            {
                $get("ddOfferType").add(elOptNew, null); // standards compliant; doesn't work in IE
            }
            catch(ex) 
            {
                $get("ddOfferType").add(elOptNew); // IE only
            }

        }
            //$get("ddOfferType").options.add(readResult[i].attributes[0].nodeValue,readResult[i].attributes[0].nodeValue)
    }
    readResult = result.documentElement.getElementsByTagName("Id");
    for(i=0;i<readResult.length;i++)
        sIds[i]=readResult[i].attributes[0].nodeValue

    sGetOffer(result,"XmlDocument",null)
    $get("dvOffer").style.visibility='visible'
    if(timerID!=-1)
    {
          clearTimeout(timerID);
        timerID  = setTimeout("OfferTimer()", 5000);
    }
}

if (typeof(Sys) !== "undefined") Sys.Application.notifyScriptLoaded();
