/*
 * Copyright 2005 Joe Walker
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/**
 * Declare an object to which we can add real functions.
 */
if (dwr == null) var dwr = {};
if (dwr.engine == null) dwr.engine = {};
if (DWREngine == null) var DWREngine = dwr.engine;

/**
 * Set an alternative error handler from the default alert box.
 * @see getahead.org/dwr/browser/engine/errors
 */
dwr.engine.setErrorHandler = function(handler) {
  dwr.engine._errorHandler = handler;
};

/**
 * Set an alternative warning handler from the default alert box.
 * @see getahead.org/dwr/browser/engine/errors
 */
dwr.engine.setWarningHandler = function(handler) {
  dwr.engine._warningHandler = handler;
};

/**
 * Setter for the text/html handler - what happens if a DWR request gets an HTML
 * reply rather than the expected Javascript. Often due to login timeout
 */
dwr.engine.setTextHtmlHandler = function(handler) {
  dwr.engine._textHtmlHandler = handler;
};

/**
 * Set a default timeout value for all calls. 0 (the default) turns timeouts off.
 * @see getahead.org/dwr/browser/engine/errors
 */
dwr.engine.setTimeout = function(timeout) {
  dwr.engine._timeout = timeout;
};

/**
 * The Pre-Hook is called before any DWR remoting is done.
 * @see getahead.org/dwr/browser/engine/hooks
 */
dwr.engine.setPreHook = function(handler) {
  dwr.engine._preHook = handler;
};

/**
 * The Post-Hook is called after any DWR remoting is done.
 * @see getahead.org/dwr/browser/engine/hooks
 */
dwr.engine.setPostHook = function(handler) {
  dwr.engine._postHook = handler;
};

/**
 * Custom headers for all DWR calls
 * @see getahead.org/dwr/????
 */
dwr.engine.setHeaders = function(headers) {
  dwr.engine._headers = headers;
};

/**
 * Custom parameters for all DWR calls
 * @see getahead.org/dwr/????
 */
dwr.engine.setParameters = function(parameters) {
  dwr.engine._parameters = parameters;
};

/** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */
dwr.engine.XMLHttpRequest = 1;

/** XHR remoting type constant. See dwr.engine.set[Rpc|Poll]Type() */
dwr.engine.IFrame = 2;

/** XHR remoting type constant. See dwr.engine.setRpcType() */
dwr.engine.ScriptTag = 3;

/**
 * Set the preferred remoting type.
 * @param newType One of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag
 * @see getahead.org/dwr/browser/engine/options
 */
dwr.engine.setRpcType = function(newType) {
  if (newType != dwr.engine.XMLHttpRequest && newType != dwr.engine.IFrame && newType != dwr.engine.ScriptTag) {
    dwr.engine._handleError(null, { name:"dwr.engine.invalidRpcType", message:"RpcType must be one of dwr.engine.XMLHttpRequest or dwr.engine.IFrame or dwr.engine.ScriptTag" });
    return;
  }
  dwr.engine._rpcType = newType;
};

/**
 * Which HTTP method do we use to send results? Must be one of "GET" or "POST".
 * @see getahead.org/dwr/browser/engine/options
 */
dwr.engine.setHttpMethod = function(httpMethod) {
  if (httpMethod != "GET" && httpMethod != "POST") {
    dwr.engine._handleError(null, { name:"dwr.engine.invalidHttpMethod", message:"Remoting method must be one of GET or POST" });
    return;
  }
  dwr.engine._httpMethod = httpMethod;
};

/**
 * Ensure that remote calls happen in the order in which they were sent? (Default: false)
 * @see getahead.org/dwr/browser/engine/ordering
 */
dwr.engine.setOrdered = function(ordered) {
  dwr.engine._ordered = ordered;
};

/**
 * Do we ask the XHR object to be asynchronous? (Default: true)
 * @see getahead.org/dwr/browser/engine/options
 */
dwr.engine.setAsync = function(async) {
  dwr.engine._async = async;
};

/**
 * Does DWR poll the server for updates? (Default: false)
 * @see getahead.org/dwr/browser/engine/options
 */
dwr.engine.setActiveReverseAjax = function(activeReverseAjax) {
  if (activeReverseAjax) {
    // Bail if we are already started
    if (dwr.engine._activeReverseAjax) return;
    dwr.engine._activeReverseAjax = true;
    dwr.engine._poll();
  }
  else {
    // Can we cancel an existing request?
    if (dwr.engine._activeReverseAjax && dwr.engine._pollReq) dwr.engine._pollReq.abort();
    dwr.engine._activeReverseAjax = false;
  }
  // TODO: in iframe mode, if we start, stop, start then the second start may
  // well kick off a second iframe while the first is still about to return
  // we should cope with this but we don't
};

/**
 * The default message handler.
 * @see getahead.org/dwr/browser/engine/errors
 */
dwr.engine.defaultErrorHandler = function(message, ex) {
  dwr.engine._debug("Error: " + ex.name + ", " + ex.message, true);
  if (message == null || message == "") alert("A server error has occured.");
  // Ignore NS_ERROR_NOT_AVAILABLE if Mozilla is being narky
  else if (message.indexOf("0x80040111") != -1) dwr.engine._debug(message);
  else alert(message);
};

/**
 * The default warning handler.
 * @see getahead.org/dwr/browser/engine/errors
 */
dwr.engine.defaultWarningHandler = function(message, ex) {
  dwr.engine._debug(message);
};

/**
 * For reduced latency you can group several remote calls together using a batch.
 * @see getahead.org/dwr/browser/engine/batch
 */
dwr.engine.beginBatch = function() {
  if (dwr.engine._batch) {
    dwr.engine._handleError(null, { name:"dwr.engine.batchBegun", message:"Batch already begun" });
    return;
  }
  dwr.engine._batch = dwr.engine._createBatch();
};

/**
 * Finished grouping a set of remote calls together. Go and execute them all.
 * @see getahead.org/dwr/browser/engine/batch
 */
dwr.engine.endBatch = function(options) {
  var batch = dwr.engine._batch;
  if (batch == null) {
    dwr.engine._handleError(null, { name:"dwr.engine.batchNotBegun", message:"No batch in progress" });
    return;
  }
  dwr.engine._batch = null;
  if (batch.map.callCount == 0) return;

  // The hooks need to be merged carefully to preserve ordering
  if (options) dwr.engine._mergeBatch(batch, options);

  // In ordered mode, we don't send unless the list of sent items is empty
  if (dwr.engine._ordered && dwr.engine._batchesLength != 0) {
    dwr.engine._batchQueue[dwr.engine._batchQueue.length] = batch;
  }
  else {
    dwr.engine._sendData(batch);
  }
};

/** @deprecated */
dwr.engine.setPollMethod = function(type) { dwr.engine.setPollType(type); };
dwr.engine.setMethod = function(type) { dwr.engine.setRpcType(type); };
dwr.engine.setVerb = function(verb) { dwr.engine.setHttpMethod(verb); };
dwr.engine.setPollType = function() { dwr.engine._debug("Manually setting the Poll Type is not supported"); };

//==============================================================================
// Only private stuff below here
//==============================================================================

/** The original page id sent from the server */
dwr.engine._origScriptSessionId = "2963CFFCADD409E3F8CA041999F4FA1B";

/** The session cookie name */
dwr.engine._sessionCookieName = "JSESSIONID"; // JSESSIONID

/** Is GET enabled for the benefit of Safari? */
dwr.engine._allowGetForSafariButMakeForgeryEasier = "false";

/** The script prefix to strip in the case of scriptTagProtection. */
dwr.engine._scriptTagProtection = "throw 'allowScriptTagRemoting is false.';";

/** The default path to the DWR servlet */
dwr.engine._defaultPath = "/acc-preview/dwr";

/** Do we use XHR for reverse ajax because we are not streaming? */
dwr.engine._pollWithXhr = "false";

/** The read page id that we calculate */
dwr.engine._scriptSessionId = null;

/** The function that we use to fetch/calculate a session id */
dwr.engine._getScriptSessionId = function() {
  if (dwr.engine._scriptSessionId == null) {
    dwr.engine._scriptSessionId = dwr.engine._origScriptSessionId + Math.floor(Math.random() * 1000);
  }
  return dwr.engine._scriptSessionId;
};

/** A function to call if something fails. */
dwr.engine._errorHandler = dwr.engine.defaultErrorHandler;

/** For debugging when something unexplained happens. */
dwr.engine._warningHandler = dwr.engine.defaultWarningHandler;

/** A function to be called before requests are marshalled. Can be null. */
dwr.engine._preHook = null;

/** A function to be called after replies are received. Can be null. */
dwr.engine._postHook = null;

/** An map of the batches that we have sent and are awaiting a reply on. */
dwr.engine._batches = {};

/** A count of the number of outstanding batches. Should be == to _batches.length unless prototype has messed things up */
dwr.engine._batchesLength = 0;

/** In ordered mode, the array of batches waiting to be sent */
dwr.engine._batchQueue = [];

/** What is the default rpc type */
dwr.engine._rpcType = dwr.engine.XMLHttpRequest;

/** What is the default remoting method (ie GET or POST) */
dwr.engine._httpMethod = "POST";

/** Do we attempt to ensure that calls happen in the order in which they were sent? */
dwr.engine._ordered = false;

/** Do we make the calls async? */
dwr.engine._async = true;

/** The current batch (if we are in batch mode) */
dwr.engine._batch = null;

/** The global timeout */
dwr.engine._timeout = 0;

/** ActiveX objects to use when we want to convert an xml string into a DOM object. */
dwr.engine._DOMDocument = ["Msxml2.DOMDocument.6.0", "Msxml2.DOMDocument.5.0", "Msxml2.DOMDocument.4.0", "Msxml2.DOMDocument.3.0", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XMLDOM"];

/** The ActiveX objects to use when we want to do an XMLHttpRequest call. */
dwr.engine._XMLHTTP = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];

/** Are we doing comet or polling? */
dwr.engine._activeReverseAjax = false;

/** The iframe that we are using to poll */
dwr.engine._outstandingIFrames = [];

/** The xhr object that we are using to poll */
dwr.engine._pollReq = null;

/** How many milliseconds between internal comet polls */
dwr.engine._pollCometInterval = 200;

/** How many times have we re-tried to poll? */
dwr.engine._pollRetries = 0;
dwr.engine._maxPollRetries = 0;

/** Do we do a document.reload if we get a text/html reply? */
dwr.engine._textHtmlHandler = null;

/** If you wish to send custom headers with every request */
dwr.engine._headers = null;

/** If you wish to send extra custom request parameters with each request */
dwr.engine._parameters = null;

/** Undocumented interceptors - do not use */
dwr.engine._postSeperator = "\n";
dwr.engine._defaultInterceptor = function(data) { return data; };
dwr.engine._urlRewriteHandler = dwr.engine._defaultInterceptor;
dwr.engine._contentRewriteHandler = dwr.engine._defaultInterceptor;
dwr.engine._replyRewriteHandler = dwr.engine._defaultInterceptor;

/** Batch ids allow us to know which batch the server is answering */
dwr.engine._nextBatchId = 0;

/** A list of the properties that need merging from calls to a batch */
dwr.engine._propnames = [ "rpcType", "httpMethod", "async", "timeout", "errorHandler", "warningHandler", "textHtmlHandler" ];

/** Do we stream, or can be hacked to do so? */
dwr.engine._partialResponseNo = 0;
dwr.engine._partialResponseYes = 1;
dwr.engine._partialResponseFlush = 2;

/** Is this page in the process of unloading? */
dwr.engine._unloading = false;

/**
 * @private Send a request. Called by the Javascript interface stub
 * @param path part of URL after the host and before the exec bit without leading or trailing /s
 * @param scriptName The class to execute
 * @param methodName The method on said class to execute
 * @param func The callback function to which any returned data should be passed
 *       if this is null, any returned data will be ignored
 * @param vararg_params The parameters to pass to the above class
 */
dwr.engine._execute = function(path, scriptName, methodName, vararg_params) {
  var singleShot = false;
  if (dwr.engine._batch == null) {
    dwr.engine.beginBatch();
    singleShot = true;
  }
  var batch = dwr.engine._batch;
  // To make them easy to manipulate we copy the arguments into an args array
  var args = [];
  for (var i = 0; i < arguments.length - 3; i++) {
    args[i] = arguments[i + 3];
  }
  // All the paths MUST be to the same servlet
  if (batch.path == null) {
    batch.path = path;
  }
  else {
    if (batch.path != path) {
      dwr.engine._handleError(batch, { name:"dwr.engine.multipleServlets", message:"Can't batch requests to multiple DWR Servlets." });
      return;
    }
  }
  // From the other params, work out which is the function (or object with
  // call meta-data) and which is the call parameters
  var callData;
  var lastArg = args[args.length - 1];
  if (typeof lastArg == "function" || lastArg == null) callData = { callback:args.pop() };
  else callData = args.pop();

  // Merge from the callData into the batch
  dwr.engine._mergeBatch(batch, callData);
  batch.handlers[batch.map.callCount] = {
    exceptionHandler:callData.exceptionHandler,
    callback:callData.callback
  };

  // Copy to the map the things that need serializing
  var prefix = "c" + batch.map.callCount + "-";
  batch.map[prefix + "scriptName"] = scriptName;
  batch.map[prefix + "methodName"] = methodName;
  batch.map[prefix + "id"] = batch.map.callCount;
  for (i = 0; i < args.length; i++) {
    dwr.engine._serializeAll(batch, [], args[i], prefix + "param" + i);
  }

  // Now we have finished remembering the call, we incr the call count
  batch.map.callCount++;
  if (singleShot) dwr.engine.endBatch();
};

/** @private Poll the server to see if there is any data waiting */
dwr.engine._poll = function() {
  if (!dwr.engine._activeReverseAjax) return;

  var batch = dwr.engine._createBatch();
  batch.map.id = 0; // TODO: Do we need this??
  batch.map.callCount = 1;
  batch.isPoll = true;
  if (dwr.engine._pollWithXhr == "true") {
    batch.rpcType = dwr.engine.XMLHttpRequest;
    batch.map.partialResponse = dwr.engine._partialResponseNo;
  }
  else {
    if (navigator.userAgent.indexOf("Gecko/") != -1) {
      batch.rpcType = dwr.engine.XMLHttpRequest;
      batch.map.partialResponse = dwr.engine._partialResponseYes;
    }
    else {
      batch.rpcType = dwr.engine.XMLHttpRequest;
      batch.map.partialResponse = dwr.engine._partialResponseNo;
    }
  }
  batch.httpMethod = "POST";
  batch.async = true;
  batch.timeout = 0;
  batch.path = dwr.engine._defaultPath;
  batch.preHooks = [];
  batch.postHooks = [];
  batch.errorHandler = dwr.engine._pollErrorHandler;
  batch.warningHandler = dwr.engine._pollErrorHandler;
  batch.handlers[0] = {
    callback:function(pause) {
      dwr.engine._pollRetries = 0;
      setTimeout(dwr.engine._poll, pause);
    }
  };

  // Send the data
  dwr.engine._sendData(batch);
  if (batch.rpcType == dwr.engine.XMLHttpRequest && batch.map.partialResponse == dwr.engine._partialResponseYes) {
    dwr.engine._checkCometPoll();
  }
};

/** Try to recover from polling errors */
dwr.engine._pollErrorHandler = function(msg, ex) {
  // if anything goes wrong then just silently try again (up to 3x) after 10s
  dwr.engine._pollRetries++;
  dwr.engine._debug("Reverse Ajax poll failed (pollRetries=" + dwr.engine._pollRetries + "): " + ex.name + " : " + ex.message);
  if (dwr.engine._pollRetries < dwr.engine._maxPollRetries) {
    setTimeout(dwr.engine._poll, 10000);
  }
  else {
    dwr.engine._activeReverseAjax = false;
    dwr.engine._debug("Giving up.");
  }
};

/** @private Generate a new standard batch */
dwr.engine._createBatch = function() {
  var batch = {
    map:{
      callCount:0,
      page:window.location.pathname + window.location.search,
      httpSessionId:dwr.engine._getJSessionId(),
      scriptSessionId:dwr.engine._getScriptSessionId()
    },
    charsProcessed:0, paramCount:0,
    parameters:{}, headers:{},
    isPoll:false, handlers:{}, preHooks:[], postHooks:[],
    rpcType:dwr.engine._rpcType,
    httpMethod:dwr.engine._httpMethod,
    async:dwr.engine._async,
    timeout:dwr.engine._timeout,
    errorHandler:dwr.engine._errorHandler,
    warningHandler:dwr.engine._warningHandler,
    textHtmlHandler:dwr.engine._textHtmlHandler
  };
  if (dwr.engine._preHook) batch.preHooks.push(dwr.engine._preHook);
  if (dwr.engine._postHook) batch.postHooks.push(dwr.engine._postHook);
  var propname, data;
  if (dwr.engine._headers) {
    for (propname in dwr.engine._headers) {
      data = dwr.engine._headers[propname];
      if (typeof data != "function") batch.headers[propname] = data;
    }
  }
  if (dwr.engine._parameters) {
    for (propname in dwr.engine._parameters) {
      data = dwr.engine._parameters[propname];
      if (typeof data != "function") batch.parameters[propname] = data;
    }
  }
  return batch;
};

/** @private Take further options and merge them into */
dwr.engine._mergeBatch = function(batch, overrides) {
  var propname, data;
  for (var i = 0; i < dwr.engine._propnames.length; i++) {
    propname = dwr.engine._propnames[i];
    if (overrides[propname] != null) batch[propname] = overrides[propname];
  }
  if (overrides.preHook != null) batch.preHooks.unshift(overrides.preHook);
  if (overrides.postHook != null) batch.postHooks.push(overrides.postHook);
  if (overrides.headers) {
    for (propname in overrides.headers) {
      data = overrides.headers[propname];
      if (typeof data != "function") batch.headers[propname] = data;
    }
  }
  if (overrides.parameters) {
    for (propname in overrides.parameters) {
      data = overrides.parameters[propname];
      if (typeof data != "function") batch.map["p-" + propname] = "" + data;
    }
  }
};

/** @private What is our session id? */
dwr.engine._getJSessionId =  function() {
  var cookies = document.cookie.split(';');
  for (var i = 0; i < cookies.length; i++) {
    var cookie = cookies[i];
    while (cookie.charAt(0) == ' ') cookie = cookie.substring(1, cookie.length);
    if (cookie.indexOf(dwr.engine._sessionCookieName + "=") == 0) {
      return cookie.substring(dwr.engine._sessionCookieName.length + 1, cookie.length);
    }
  }
  return "";
};

/** @private Check for reverse Ajax activity */
dwr.engine._checkCometPoll = function() {
  for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) {
    var text = "";
    var iframe = dwr.engine._outstandingIFrames[i];
    try {
      text = dwr.engine._getTextFromCometIFrame(iframe);
    }
    catch (ex) {
      dwr.engine._handleWarning(iframe.batch, ex);
    }
    if (text != "") dwr.engine._processCometResponse(text, iframe.batch);
  }
  if (dwr.engine._pollReq) {
    var req = dwr.engine._pollReq;
    var text = req.responseText;
    if (text != null) dwr.engine._processCometResponse(text, req.batch);
  }

  // If the poll resources are still there, come back again
  if (dwr.engine._outstandingIFrames.length > 0 || dwr.engine._pollReq) {
    setTimeout(dwr.engine._checkCometPoll, dwr.engine._pollCometInterval);
  }
};

/** @private Extract the whole (executed an all) text from the current iframe */
dwr.engine._getTextFromCometIFrame = function(frameEle) {
  var body = frameEle.contentWindow.document.body;
  if (body == null) return "";
  var text = body.innerHTML;
  // We need to prevent IE from stripping line feeds
  if (text.indexOf("<PRE>") == 0 || text.indexOf("<pre>") == 0) {
    text = text.substring(5, text.length - 7);
  }
  return text;
};

/** @private Some more text might have come in, test and execute the new stuff */
dwr.engine._processCometResponse = function(response, batch) {
  if (batch.charsProcessed == response.length) return;
  if (response.length == 0) {
    batch.charsProcessed = 0;
    return;
  }

  var firstStartTag = response.indexOf("//#DWR-START#", batch.charsProcessed);
  if (firstStartTag == -1) {
    // dwr.engine._debug("No start tag (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed) + "'");
    batch.charsProcessed = response.length;
    return;
  }
  // if (firstStartTag > 0) {
  //   dwr.engine._debug("Start tag not at start (search from " + batch.charsProcessed + "). skipping '" + response.substring(batch.charsProcessed, firstStartTag) + "'");
  // }

  var lastEndTag = response.lastIndexOf("//#DWR-END#");
  if (lastEndTag == -1) {
    // dwr.engine._debug("No end tag. unchanged charsProcessed=" + batch.charsProcessed);
    return;
  }

  // Skip the end tag too for next time, remembering CR and LF
  if (response.charCodeAt(lastEndTag + 11) == 13 && response.charCodeAt(lastEndTag + 12) == 10) {
    batch.charsProcessed = lastEndTag + 13;
  }
  else {
    batch.charsProcessed = lastEndTag + 11;
  }

  var exec = response.substring(firstStartTag + 13, lastEndTag);

  dwr.engine._receivedBatch = batch;
  dwr.engine._eval(exec);
  dwr.engine._receivedBatch = null;
};

/** @private Actually send the block of data in the batch object. */
dwr.engine._sendData = function(batch) {
  batch.map.batchId = dwr.engine._nextBatchId;
  dwr.engine._nextBatchId++;
  dwr.engine._batches[batch.map.batchId] = batch;
  dwr.engine._batchesLength++;
  batch.completed = false;

  for (var i = 0; i < batch.preHooks.length; i++) {
    batch.preHooks[i]();
  }
  batch.preHooks = null;
  // Set a timeout
  if (batch.timeout && batch.timeout != 0) {
    batch.timeoutId = setTimeout(function() { dwr.engine._abortRequest(batch); }, batch.timeout);
  }
  // Get setup for XMLHttpRequest if possible
  if (batch.rpcType == dwr.engine.XMLHttpRequest) {
    if (window.XMLHttpRequest) {
      batch.req = new XMLHttpRequest();
    }
    // IE5 for the mac claims to support window.ActiveXObject, but throws an error when it's used
    else if (window.ActiveXObject && !(navigator.userAgent.indexOf("Mac") >= 0 && navigator.userAgent.indexOf("MSIE") >= 0)) {
      batch.req = dwr.engine._newActiveXObject(dwr.engine._XMLHTTP);
    }
  }

  var prop, request;
  if (batch.req) {
    // Proceed using XMLHttpRequest
    if (batch.async) {
      batch.req.onreadystatechange = function() {
        if (typeof dwr != 'undefined') dwr.engine._stateChange(batch);
      };
    }
    // If we're polling, record this for monitoring
    if (batch.isPoll) {
      dwr.engine._pollReq = batch.req;
      // In IE XHR is an ActiveX control so you can't augment it like this
      if (!(document.all && !window.opera)) batch.req.batch = batch;
    }
    // Workaround for Safari 1.x POST bug
    var indexSafari = navigator.userAgent.indexOf("Safari/");
    if (indexSafari >= 0) {
      var version = navigator.userAgent.substring(indexSafari + 7);
      if (parseInt(version, 10) < 400) {
        if (dwr.engine._allowGetForSafariButMakeForgeryEasier == "true") batch.httpMethod = "GET";
        else dwr.engine._handleWarning(batch, { name:"dwr.engine.oldSafari", message:"Safari GET support disabled. See getahead.org/dwr/server/servlet and allowGetForSafariButMakeForgeryEasier." });
      }
    }
    batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall;
    request = dwr.engine._constructRequest(batch);
    try {
      batch.req.open(batch.httpMethod, request.url, batch.async);
      try {
        for (prop in batch.headers) {
          var value = batch.headers[prop];
          if (typeof value == "string") batch.req.setRequestHeader(prop, value);
        }
        if (!batch.headers["Content-Type"]) batch.req.setRequestHeader("Content-Type", "text/plain");
      }
      catch (ex) {
        dwr.engine._handleWarning(batch, ex);
      }
      batch.req.send(request.body);
      if (!batch.async) dwr.engine._stateChange(batch);
    }
    catch (ex) {
      dwr.engine._handleError(batch, ex);
    }
  }
  else if (batch.rpcType != dwr.engine.ScriptTag) {
    var idname = batch.isPoll ? "dwr-if-poll-" + batch.map.batchId : "dwr-if-" + batch.map.batchId;
    // Removed htmlfile implementation. Don't expect it to return before v3
    batch.div = document.createElement("div");
    // Add the div to the document first, otherwise IE 6 will ignore onload handler.
    document.body.appendChild(batch.div);
    batch.div.innerHTML = "<iframe src='javascript:void(0)' frameborder='0' style='width:0px;height:0px;border:0;' id='" + idname + "' name='" + idname + "' onload='dwr.engine._iframeLoadingComplete (" + batch.map.batchId + ");'></iframe>";
    batch.document = document;
    batch.iframe = batch.document.getElementById(idname);
    batch.iframe.batch = batch;
    batch.mode = batch.isPoll ? dwr.engine._ModeHtmlPoll : dwr.engine._ModeHtmlCall;
    if (batch.isPoll) dwr.engine._outstandingIFrames.push(batch.iframe);
    request = dwr.engine._constructRequest(batch);
    if (batch.httpMethod == "GET") {
      batch.iframe.setAttribute("src", request.url);
    }
    else {
      batch.form = batch.document.createElement("form");
      batch.form.setAttribute("id", "dwr-form");
      batch.form.setAttribute("action", request.url);
      batch.form.setAttribute("style", "display:none;");
      batch.form.setAttribute("target", idname);
      batch.form.target = idname;
      batch.form.setAttribute("method", batch.httpMethod);
      for (prop in batch.map) {
        var value = batch.map[prop];
        if (typeof value != "function") {
          var formInput = batch.document.createElement("input");
          formInput.setAttribute("type", "hidden");
          formInput.setAttribute("name", prop);
          formInput.setAttribute("value", value);
          batch.form.appendChild(formInput);
        }
      }
      batch.document.body.appendChild(batch.form);
      batch.form.submit();
    }
  }
  else {
    batch.httpMethod = "GET"; // There's no such thing as ScriptTag using POST
    batch.mode = batch.isPoll ? dwr.engine._ModePlainPoll : dwr.engine._ModePlainCall;
    request = dwr.engine._constructRequest(batch);
    batch.script = document.createElement("script");
    batch.script.id = "dwr-st-" + batch.map["c0-id"];
    batch.script.src = request.url;
    document.body.appendChild(batch.script);
  }
};

dwr.engine._ModePlainCall = "/call/plaincall/";
dwr.engine._ModeHtmlCall = "/call/htmlcall/";
dwr.engine._ModePlainPoll = "/call/plainpoll/";
dwr.engine._ModeHtmlPoll = "/call/htmlpoll/";

/** @private Work out what the URL should look like */
dwr.engine._constructRequest = function(batch) {
  // A quick string to help people that use web log analysers
  var request = { url:batch.path + batch.mode, body:null };
  if (batch.isPoll == true) {
    request.url += "ReverseAjax.dwr";
  }
  else if (batch.map.callCount == 1) {
    request.url += batch.map["c0-scriptName"] + "." + batch.map["c0-methodName"] + ".dwr";
  }
  else {
    request.url += "Multiple." + batch.map.callCount + ".dwr";
  }
  // Play nice with url re-writing
  var sessionMatch = location.href.match(/jsessionid=([^?]+)/);
  if (sessionMatch != null) {
    request.url += ";jsessionid=" + sessionMatch[1];
  }

  var prop;
  if (batch.httpMethod == "GET") {
    // Some browsers (Opera/Safari2) seem to fail to convert the callCount value
    // to a string in the loop below so we do it manually here.
    batch.map.callCount = "" + batch.map.callCount;
    request.url += "?";
    for (prop in batch.map) {
      if (typeof batch.map[prop] != "function") {
        request.url += encodeURIComponent(prop) + "=" + encodeURIComponent(batch.map[prop]) + "&";
      }
    }
    request.url = request.url.substring(0, request.url.length - 1);
  }
  else {
    // PERFORMANCE: for iframe mode this is thrown away.
    request.body = "";
    if (document.all && !window.opera) {
      // Use array joining on IE (fastest)
      var buf = [];
      for (prop in batch.map) {
        if (typeof batch.map[prop] != "function") {
          buf.push(prop + "=" + batch.map[prop] + dwr.engine._postSeperator);
        }
      }
      request.body = buf.join("");
    }
    else {
      // Use string concat on other browsers (fastest)
      for (prop in batch.map) {
        if (typeof batch.map[prop] != "function") {
          request.body += prop + "=" + batch.map[prop] + dwr.engine._postSeperator;
        }
      }
    }
    request.body = dwr.engine._contentRewriteHandler(request.body);
  }
  request.url = dwr.engine._urlRewriteHandler(request.url);
  return request;
};

/** @private Called by XMLHttpRequest to indicate that something has happened */
dwr.engine._stateChange = function(batch) {
  var toEval;

  if (batch.completed) {
    dwr.engine._debug("Error: _stateChange() with batch.completed");
    return;
  }

  var req = batch.req;
  try {
    if (req.readyState != 4) return;
  }
  catch (ex) {
    dwr.engine._handleWarning(batch, ex);
    // It's broken - clear up and forget this call
    dwr.engine._clearUp(batch);
    return;
  }

  if (dwr.engine._unloading) {
    dwr.engine._debug("Ignoring reply from server as page is unloading.");
    return;
  }

  try {
    var reply = req.responseText;
    reply = dwr.engine._replyRewriteHandler(reply);
    var status = req.status; // causes Mozilla to except on page moves

    if (reply == null || reply == "") {
      dwr.engine._handleWarning(batch, { name:"dwr.engine.missingData", message:"No data received from server" });
    }
    else if (status != 200) {
      dwr.engine._handleError(batch, { name:"dwr.engine.http." + status, message:req.statusText });
    }
    else {
      var contentType = req.getResponseHeader("Content-Type");
      if (!contentType.match(/^text\/plain/) && !contentType.match(/^text\/javascript/)) {
        if (contentType.match(/^text\/html/) && typeof batch.textHtmlHandler == "function") {
          batch.textHtmlHandler({ status:status, responseText:reply, contentType:contentType });
        }
        else {
          dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidMimeType", message:"Invalid content type: '" + contentType + "'" });
        }
      }
      else {
        // Comet replies might have already partially executed
        if (batch.isPoll && batch.map.partialResponse == dwr.engine._partialResponseYes) {
          dwr.engine._processCometResponse(reply, batch);
        }
        else {
          if (reply.search("//#DWR") == -1) {
            dwr.engine._handleWarning(batch, { name:"dwr.engine.invalidReply", message:"Invalid reply from server" });
          }
          else {
            toEval = reply;
          }
        }
      }
    }
  }
  catch (ex) {
    dwr.engine._handleWarning(batch, ex);
  }

  dwr.engine._callPostHooks(batch);

  // Outside of the try/catch so errors propogate normally:
  dwr.engine._receivedBatch = batch;
  if (toEval != null) toEval = toEval.replace(dwr.engine._scriptTagProtection, "");
  dwr.engine._eval(toEval);
  dwr.engine._receivedBatch = null;
  dwr.engine._validateBatch(batch);
  if (!batch.completed) dwr.engine._clearUp(batch);
};

/**
 * @private This function is invoked when a batch reply is received.
 * It checks that there is a response for every call in the batch. Otherwise,
 * an error will be signaled (a call without a response indicates that the
 * server failed to send complete batch response).
 */
dwr.engine._validateBatch = function(batch) {
  // If some call left unreplied, report an error.
  if (!batch.completed) {
    for (var i = 0; i < batch.map.callCount; i++) {
      if (batch.handlers[i] != null) {
        dwr.engine._handleWarning(batch, { name:"dwr.engine.incompleteReply", message:"Incomplete reply from server" });
        break;
      }
    }
  }
}

/** @private Called from iframe onload, check batch using batch-id */
dwr.engine._iframeLoadingComplete = function(batchId) {
  // dwr.engine._checkCometPoll();
  var batch = dwr.engine._batches[batchId];
  if (batch) dwr.engine._validateBatch(batch);
}

/** @private Called by the server: Execute a callback */
dwr.engine._remoteHandleCallback = function(batchId, callId, reply) {
  var batch = dwr.engine._batches[batchId];
  if (batch == null) {
    dwr.engine._debug("Warning: batch == null in remoteHandleCallback for batchId=" + batchId, true);
    return;
  }
  // Error handlers inside here indicate an error that is nothing to do
  // with DWR so we handle them differently.
  try {
    var handlers = batch.handlers[callId];
    batch.handlers[callId] = null;
    if (!handlers) {
      dwr.engine._debug("Warning: Missing handlers. callId=" + callId, true);
    }
    else if (typeof handlers.callback == "function") handlers.callback(reply);
  }
  catch (ex) {
    dwr.engine._handleError(batch, ex);
  }
};

/** @private Called by the server: Handle an exception for a call */
dwr.engine._remoteHandleException = function(batchId, callId, ex) {
  var batch = dwr.engine._batches[batchId];
  if (batch == null) { dwr.engine._debug("Warning: null batch in remoteHandleException", true); return; }
  var handlers = batch.handlers[callId];
  batch.handlers[callId] = null;
  if (handlers == null) { dwr.engine._debug("Warning: null handlers in remoteHandleException", true); return; }
  if (ex.message == undefined) ex.message = "";
  if (typeof handlers.exceptionHandler == "function") handlers.exceptionHandler(ex.message, ex);
  else if (typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex);
};

/** @private Called by the server: The whole batch is broken */
dwr.engine._remoteHandleBatchException = function(ex, batchId) {
  var searchBatch = (dwr.engine._receivedBatch == null && batchId != null);
  if (searchBatch) {
    dwr.engine._receivedBatch = dwr.engine._batches[batchId];
  }
  if (ex.message == undefined) ex.message = "";
  dwr.engine._handleError(dwr.engine._receivedBatch, ex);
  if (searchBatch) {
    dwr.engine._receivedBatch = null;
    dwr.engine._clearUp(dwr.engine._batches[batchId]);
  }
};

/** @private Called by the server: Reverse ajax should not be used */
dwr.engine._remotePollCometDisabled = function(ex, batchId) {
  dwr.engine.setActiveReverseAjax(false);
  var searchBatch = (dwr.engine._receivedBatch == null && batchId != null);
  if (searchBatch) {
    dwr.engine._receivedBatch = dwr.engine._batches[batchId];
  }
  if (ex.message == undefined) ex.message = "";
  dwr.engine._handleError(dwr.engine._receivedBatch, ex);
  if (searchBatch) {
    dwr.engine._receivedBatch = null;
    dwr.engine._clearUp(dwr.engine._batches[batchId]);
  }
};

/** @private Called by the server: An IFrame reply is about to start */
dwr.engine._remoteBeginIFrameResponse = function(iframe, batchId) {
  if (iframe != null) dwr.engine._receivedBatch = iframe.batch;
  dwr.engine._callPostHooks(dwr.engine._receivedBatch);
};

/** @private Called by the server: An IFrame reply is just completing */
dwr.engine._remoteEndIFrameResponse = function(batchId) {
  dwr.engine._clearUp(dwr.engine._receivedBatch);
  dwr.engine._receivedBatch = null;
};

/** @private This is a hack to make the context be this window */
dwr.engine._eval = function(script) {
  if (script == null) return null;
  if (script == "") { dwr.engine._debug("Warning: blank script", true); return null; }
  // dwr.engine._debug("Exec: [" + script + "]", true);
  return eval(script);
};

/** @private Called as a result of a request timeout */
dwr.engine._abortRequest = function(batch) {
  if (batch && !batch.completed) {
    dwr.engine._clearUp(batch);
    if (batch.req) batch.req.abort();
    dwr.engine._handleError(batch, { name:"dwr.engine.timeout", message:"Timeout" });
  }
};

/** @private call all the post hooks for a batch */
dwr.engine._callPostHooks = function(batch) {
  if (batch.postHooks) {
    for (var i = 0; i < batch.postHooks.length; i++) {
      batch.postHooks[i]();
    }
    batch.postHooks = null;
  }
};

/** @private A call has finished by whatever means and we need to shut it all down. */
dwr.engine._clearUp = function(batch) {
  if (!batch) { dwr.engine._debug("Warning: null batch in dwr.engine._clearUp()", true); return; }
  if (batch.completed) { dwr.engine._debug("Warning: Double complete", true); return; }

  // IFrame tidyup
  if (batch.div) batch.div.parentNode.removeChild(batch.div);
  if (batch.iframe) {
    // If this is a poll frame then stop comet polling
    for (var i = 0; i < dwr.engine._outstandingIFrames.length; i++) {
      if (dwr.engine._outstandingIFrames[i] == batch.iframe) {
        dwr.engine._outstandingIFrames.splice(i, 1);
      }
    }
    batch.iframe.parentNode.removeChild(batch.iframe);
  }
  if (batch.form) batch.form.parentNode.removeChild(batch.form);

  // XHR tidyup: avoid IE handles increase
  if (batch.req) {
    // If this is a poll frame then stop comet polling
    if (batch.req == dwr.engine._pollReq) dwr.engine._pollReq = null;
    delete batch.req;
  }

  // Timeout tidyup
  if (batch.timeoutId) {
    clearTimeout(batch.timeoutId);
    delete batch.timeoutId;
  }

  if (batch.map && (batch.map.batchId || batch.map.batchId == 0)) {
    delete dwr.engine._batches[batch.map.batchId];
    dwr.engine._batchesLength--;
  }

  batch.completed = true;

  // If there is anything on the queue waiting to go out, then send it.
  // We don't need to check for ordered mode, here because when ordered mode
  // gets turned off, we still process *waiting* batches in an ordered way.
  if (dwr.engine._batchQueue.length != 0) {
    var sendbatch = dwr.engine._batchQueue.shift();
    dwr.engine._sendData(sendbatch);
  }
};

/** @private Abort any XHRs in progress at page unload (solves zombie socket problems in IE). */
dwr.engine._unloader = function() {
  dwr.engine._unloading = true;

  // Empty queue of waiting ordered requests
  dwr.engine._batchQueue.length = 0;

  // Abort any ongoing XHRs and clear their batches
  for (var batchId in dwr.engine._batches) {
    var batch = dwr.engine._batches[batchId];
    // Only process objects that look like batches (avoid prototype additions!)
    if (batch && batch.map) {
      if (batch.req) {
        batch.req.abort();
      }
      dwr.engine._clearUp(batch);
    }
  }
};
// Now register the unload handler
if (window.addEventListener) window.addEventListener('unload', dwr.engine._unloader, false);
else if (window.attachEvent) window.attachEvent('onunload', dwr.engine._unloader);

/** @private Generic error handling routing to save having null checks everywhere */
dwr.engine._handleError = function(batch, ex) {
  if (typeof ex == "string") ex = { name:"unknown", message:ex };
  if (ex.message == null) ex.message = "";
  if (ex.name == null) ex.name = "unknown";
  if (batch && typeof batch.errorHandler == "function") batch.errorHandler(ex.message, ex);
  else if (dwr.engine._errorHandler) dwr.engine._errorHandler(ex.message, ex);
  if (batch) dwr.engine._clearUp(batch);
};

/** @private Generic error handling routing to save having null checks everywhere */
dwr.engine._handleWarning = function(batch, ex) {
  if (typeof ex == "string") ex = { name:"unknown", message:ex };
  if (ex.message == null) ex.message = "";
  if (ex.name == null) ex.name = "unknown";
  if (batch && typeof batch.warningHandler == "function") batch.warningHandler(ex.message, ex);
  else if (dwr.engine._warningHandler) dwr.engine._warningHandler(ex.message, ex);
  if (batch) dwr.engine._clearUp(batch);
};

/**
 * @private Marshall a data item
 * @param batch A map of variables to how they have been marshalled
 * @param referto An array of already marshalled variables to prevent recurrsion
 * @param data The data to be marshalled
 * @param name The name of the data being marshalled
 */
dwr.engine._serializeAll = function(batch, referto, data, name) {
  if (data == null) {
    batch.map[name] = "null:null";
    return;
  }

  switch (typeof data) {
  case "boolean":
    batch.map[name] = "boolean:" + data;
    break;
  case "number":
    batch.map[name] = "number:" + data;
    break;
  case "string":
    batch.map[name] = "string:" + encodeURIComponent(data);
    break;
  case "object":
    if (data instanceof String) batch.map[name] = "String:" + encodeURIComponent(data);
    else if (data instanceof Boolean) batch.map[name] = "Boolean:" + data;
    else if (data instanceof Number) batch.map[name] = "Number:" + data;
    else if (data instanceof Date) batch.map[name] = "Date:" + data.getTime();
    else if (data && data.join) batch.map[name] = dwr.engine._serializeArray(batch, referto, data, name);
    else batch.map[name] = dwr.engine._serializeObject(batch, referto, data, name);
    break;
  case "function":
    // We just ignore functions.
    break;
  default:
    dwr.engine._handleWarning(null, { name:"dwr.engine.unexpectedType", message:"Unexpected type: " + typeof data + ", attempting default converter." });
    batch.map[name] = "default:" + data;
    break;
  }
};

/** @private Have we already converted this object? */
dwr.engine._lookup = function(referto, data, name) {
  var lookup;
  // Can't use a map: getahead.org/ajax/javascript-gotchas
  for (var i = 0; i < referto.length; i++) {
    if (referto[i].data == data) {
      lookup = referto[i];
      break;
    }
  }
  if (lookup) return "reference:" + lookup.name;
  referto.push({ data:data, name:name });
  return null;
};

/** @private Marshall an object */
dwr.engine._serializeObject = function(batch, referto, data, name) {
  var ref = dwr.engine._lookup(referto, data, name);
  if (ref) return ref;

  // This check for an HTML is not complete, but is there a better way?
  // Maybe we should add: data.hasChildNodes typeof "function" == true
  if (data.nodeName && data.nodeType) {
    return dwr.engine._serializeXml(batch, referto, data, name);
  }

  // treat objects as an associative arrays
  var reply = "Object_" + dwr.engine._getObjectClassName(data) + ":{";
  var element;
  for (element in data) {
    if (typeof data[element] != "function") {
      batch.paramCount++;
      var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount;
      dwr.engine._serializeAll(batch, referto, data[element], childName);

      reply += encodeURIComponent(element) + ":reference:" + childName + ", ";
    }
  }

  if (reply.substring(reply.length - 2) == ", ") {
    reply = reply.substring(0, reply.length - 2);
  }
  reply += "}";

  return reply;
};

/** @private Returns the classname of supplied argument obj */
dwr.engine._errorClasses = { "Error":Error, "EvalError":EvalError, "RangeError":RangeError, "ReferenceError":ReferenceError, "SyntaxError":SyntaxError, "TypeError":TypeError, "URIError":URIError };
dwr.engine._getObjectClassName = function(obj) {
  // Try to find the classname by stringifying the object's constructor
  // and extract <class> from "function <class>".
  if (obj && obj.constructor && obj.constructor.toString)
  {
    var str = obj.constructor.toString();
    var regexpmatch = str.match(/function\s+(\w+)/);
    if (regexpmatch && regexpmatch.length == 2) {
      return regexpmatch[1];
    }
  }

  // Now manually test against the core Error classes, as these in some
  // browsers successfully match to the wrong class in the
  // Object.toString() test we will do later
  if (obj && obj.constructor) {
	for (var errorname in dwr.engine._errorClasses) {
      if (obj.constructor == dwr.engine._errorClasses[errorname]) return errorname;
    }
  }

  // Try to find the classname by calling Object.toString() on the object
  // and extracting <class> from "[object <class>]"
  if (obj) {
    var str = Object.prototype.toString.call(obj);
    var regexpmatch = str.match(/\[object\s+(\w+)/);
    if (regexpmatch && regexpmatch.length==2) {
      return regexpmatch[1];
    }
  }

  // Supplied argument was probably not an object, but what is better?
  return "Object";
};

/** @private Marshall an object */
dwr.engine._serializeXml = function(batch, referto, data, name) {
  var ref = dwr.engine._lookup(referto, data, name);
  if (ref) return ref;

  var output;
  if (window.XMLSerializer) output = new XMLSerializer().serializeToString(data);
  else if (data.toXml) output = data.toXml;
  else output = data.innerHTML;

  return "XML:" + encodeURIComponent(output);
};

/** @private Marshall an array */
dwr.engine._serializeArray = function(batch, referto, data, name) {
  var ref = dwr.engine._lookup(referto, data, name);
  if (ref) return ref;

  if (document.all && !window.opera) {
    // Use array joining on IE (fastest)
    var buf = ["Array:["];
    for (var i = 0; i < data.length; i++) {
      if (i != 0) buf.push(",");
      batch.paramCount++;
      var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount;
      dwr.engine._serializeAll(batch, referto, data[i], childName);
      buf.push("reference:");
      buf.push(childName);
    }
    buf.push("]");
    reply = buf.join("");
  }
  else {
    // Use string concat on other browsers (fastest)
    var reply = "Array:[";
    for (var i = 0; i < data.length; i++) {
      if (i != 0) reply += ",";
      batch.paramCount++;
      var childName = "c" + dwr.engine._batch.map.callCount + "-e" + batch.paramCount;
      dwr.engine._serializeAll(batch, referto, data[i], childName);
      reply += "reference:";
      reply += childName;
    }
    reply += "]";
  }

  return reply;
};

/** @private Convert an XML string into a DOM object. */
dwr.engine._unserializeDocument = function(xml) {
  var dom;
  if (window.DOMParser) {
    var parser = new DOMParser();
    dom = parser.parseFromString(xml, "text/xml");
    if (!dom.documentElement || dom.documentElement.tagName == "parsererror") {
      var message = dom.documentElement.firstChild.data;
      message += "\n" + dom.documentElement.firstChild.nextSibling.firstChild.data;
      throw message;
    }
    return dom;
  }
  else if (window.ActiveXObject) {
    dom = dwr.engine._newActiveXObject(dwr.engine._DOMDocument);
    dom.loadXML(xml); // What happens on parse fail with IE?
    return dom;
  }
  else {
    var div = document.createElement("div");
    div.innerHTML = xml;
    return div;
  }
};

/** @param axarray An array of strings to attempt to create ActiveX objects from */
dwr.engine._newActiveXObject = function(axarray) {
  var returnValue;
  for (var i = 0; i < axarray.length; i++) {
    try {
      returnValue = new ActiveXObject(axarray[i]);
      break;
    }
    catch (ex) { /* ignore */ }
  }
  return returnValue;
};

/** @private Used internally when some message needs to get to the programmer */
dwr.engine._debug = function(message, stacktrace) {
  var written = false;
  try {
    if (window.console) {
      if (stacktrace && window.console.trace) window.console.trace();
      window.console.log(message);
      written = true;
    }
    else if (window.opera && window.opera.postError) {
      window.opera.postError(message);
      written = true;
    }
  }
  catch (ex) { /* ignore */ }

  if (!written) {
    var debug = document.getElementById("dwr-debug");
    if (debug) {
      var contents = message + "<br/>" + debug.innerHTML;
      if (contents.length > 2048) contents = contents.substring(0, 2048);
      debug.innerHTML = contents;
    }
  }
};

jQuery.fn.appendDom=function(A){return this.each(function(){for(element in A){var D=null;var F=false;if((typeof (A[element].tagName)==="string")){if($.browser.msie&&A[element].tagName=="input"&&(A[element]["type"]=="radio"||A[element]["type"]=="checkbox")){var H=' id="'+A[element]["id"]+'"';var C=' type="'+A[element]["type"]+'"';var B=' name="'+A[element]["name"]+'"';var G=' value="'+A[element]["valu3"]+'"';var E="checked"==A[element]["checked"]?' checked="'+A[element]["checked"]+'"':"";D=document.createElement("<input"+H+C+B+G+E+"/>");F=true}else{D=document.createElement(A[element].tagName)}}else{D=document.createElement("div")}if(!F){delete A[element].tagName;for(attrib in A[element]){if(attrib=="className"){jQuery(D).addClass(A[element][attrib]);delete A[element].className}switch(typeof (A[element][attrib])){case"string":if(typeof (D[attrib])==="string"){D[attrib]=A[element][attrib]}else{if(attrib=="style"){D.style.cssText=A[element][attrib]}else{if(attrib=="f0r"){D.setAttribute("for",A[element][attrib])}else{if(attrib=="valu3"){D.value=A[element][attrib]}else{if(attrib=="checked"&&A[element][attrib]=="checked"){D.checked=true}else{D.setAttribute(attrib,A[element][attrib])}}}}}break;case"function":D[attrib]=A[element][attrib];break;case"object":if(attrib==="childNodes"){jQuery(D).appendDom(A[element][attrib])}break}}}this.appendChild(D)}})};
/*
 * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010
 * http://benalman.com/projects/jquery-bbq-plugin/
 *
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,P){var I,M=Array.prototype.slice,R=decodeURIComponent,A=$.param,C,L,V,B=$.bbq=$.bbq||{},Q,U,J,E=$.event.special,D="hashchange",a="querystring",d="fragment",Y="elemUrlAttr",G="location",K="href",T="src",X=/^.*\?|#.*$/g,W=/^.*\#/,H,c={};function e(f){return typeof f==="string"}function b(g){var f=M.call(arguments,1);return function(){return g.apply(this,f.concat(M.call(arguments)))}}function N(f){return f.replace(/^[^#]*#?(.*)$/,"$1")}function O(f){return f.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function F(h,m,f,i,g){var o,l,k,n,j;if(i!==I){k=f.match(h?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);j=k[3]||"";if(g===2&&e(i)){l=i.replace(h?W:X,"")}else{n=L(k[2]);i=e(i)?L[h?d:a](i):i;l=g===2?i:g===1?$.extend({},i,n):$.extend({},n,i);l=A(l);if(h){l=l.replace(H,R)}}o=k[1]+(h?"#":l||!k[1]?"?":"")+l+j}else{o=m(f!==I?f:P[G][K])}return o}A[a]=b(F,0,O);A[d]=C=b(F,1,N);C.noEscape=function(g){g=g||"";var f=$.map(g.split(""),encodeURIComponent);H=new RegExp(f.join("|"),"g")};C.noEscape(",/");$.deparam=L=function(i,f){var h={},g={"true":!0,"false":!1,"null":null};$.each(i.replace(/\+/g," ").split("&"),function(m,r){var l=r.split("="),q=R(l[0]),k,p=h,n=0,s=q.split("]["),o=s.length-1;if(/\[/.test(s[0])&&/\]$/.test(s[o])){s[o]=s[o].replace(/\]$/,"");s=s.shift().split("[").concat(s);o=s.length-1}else{o=0}if(l.length===2){k=R(l[1]);if(f){k=k&&!isNaN(k)?+k:k==="undefined"?I:g[k]!==I?g[k]:k}if(o){for(;n<=o;n++){q=s[n]===""?p.length:s[n];p=p[q]=n<o?p[q]||(s[n+1]&&isNaN(s[n+1])?{}:[]):k}}else{if($.isArray(h[q])){h[q].push(k)}else{if(h[q]!==I){h[q]=[h[q],k]}else{h[q]=k}}}}else{if(q){h[q]=f?I:""}}});return h};function Z(h,f,g){if(f===I||typeof f==="boolean"){g=f;f=A[h?d:a]()}else{f=e(f)?f.replace(h?W:X,""):f}return L(f,g)}L[a]=b(Z,0);L[d]=V=b(Z,1);$[Y]||($[Y]=function(f){return $.extend(c,f)})({a:K,base:K,iframe:T,img:T,input:T,form:"action",link:K,script:T});J=$[Y];function S(i,g,h,f){if(!e(h)&&typeof h!=="object"){f=h;h=g;g=I}return this.each(function(){var l=$(this),j=g||J()[(this.nodeName||"").toLowerCase()]||"",k=j&&l.attr(j)||"";l.attr(j,A[i](k,h,f))})}$.fn[a]=b(S,a);$.fn[d]=b(S,d);B.pushState=Q=function(i,f){if(e(i)&&/^#/.test(i)&&f===I){f=2}var h=i!==I,g=C(P[G][K],h?i:{},h?f:2);P[G][K]=g+(/#/.test(g)?"":"#")};B.getState=U=function(f,g){return f===I||typeof f==="boolean"?V(f):V(g)[f]};B.removeState=function(f){var g={};if(f!==I){g=U();$.each($.isArray(f)?f:arguments,function(j,h){delete g[h]})}Q(g,2)};E[D]=$.extend(E[D],{add:function(f){var h;function g(j){var i=j[d]=C();j.getState=function(k,l){return k===I||typeof k==="boolean"?L(i,k):L(i,l)[k]};h.apply(this,arguments)}if($.isFunction(f)){h=f;return g}else{h=f.handler;f.handler=g}}})})(jQuery,this);
/*
 * jQuery hashchange event - v1.2 - 2/11/2010
 * http://benalman.com/projects/jquery-hashchange-plugin/
 *
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,I,B){var J,K=$.event.special,C="location",D="hashchange",L="href",F=$.browser,G=document.documentMode,H=F.msie&&(G===B||G<8),E="on"+D in I&&!H;function A(M){M=M||I[C][L];return M.replace(/^[^#]*#?(.*)$/,"$1")}$[D+"Delay"]=100;K[D]=$.extend(K[D],{setup:function(){if(E){return false}$(J.start)},teardown:function(){if(E){return false}$(J.stop)}});J=(function(){var M={},R,N,O,Q;function P(){O=Q=function(S){return S};if(H){N=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;Q=function(){return A(N.document[C][L])};O=function(U,S){if(U!==S){var T=N.document;T.open().close();T[C].hash="#"+U}};O(A())}}M.start=function(){if(R){return }var T=A();O||P();(function S(){var V=A(),U=Q(T);if(V!==T){O(T=V,U);$(I).trigger(D)}else{if(U!==T){I[C][L]=I[C][L].replace(/#.*/,"")+"#"+U}}R=setTimeout(S,$[D+"Delay"])})()};M.stop=function(){if(!N){R&&clearTimeout(R);R=0}};return M})()})(jQuery,this);(function(B){var A=function(C){if(!C){var C=window.event}C.cancelBubble=true;if(C.stopPropagation){C.stopPropagation()}};B.fn.checkbox=function(C){try{document.execCommand("BackgroundImageCache",false,true)}catch(F){}var E={cls:"jquery-checkbox",empty:"images/aoa/1pxt.gif"};E=B.extend(E,C||{});var D=function(G){var J=G.checked;var H=G.disabled;var I=B(G);if(G.stateInterval){clearInterval(G.stateInterval)}G.stateInterval=setInterval(function(){if(G.disabled!=H){I.trigger((H=!!G.disabled)?"disable":"enable")}if(G.checked!=J){I.trigger((J=!!G.checked)?"check":"uncheck")}},10);return I};return this.each(function(){var I=this;var H=D(I);if(I.wrapper){I.wrapper.remove()}I.wrapper=B('<span class="'+E.cls+'"><span class="mark"><img src="'+E.empty+'" /></span></span>');I.wrapperInner=I.wrapper.children("span:eq(0)");I.wrapper.hover(function(J){I.wrapperInner.addClass(E.cls+"-hover");A(J)},function(J){I.wrapperInner.removeClass(E.cls+"-hover");A(J)});H.css({position:"absolute",zIndex:-1,visibility:"hidden"}).after(I.wrapper);var G=false;if(H.attr("id")){G=B("label[for="+H.attr("id")+"]");if(!G.length){G=false}}if(!G){G=H.closest?H.closest("label"):H.parents("label:eq(0)");if(!G.length){G=false}}if(!G&&B.browser.msie){B("label").each(function(){if(H.attr("id")==this.getAttribute("for")){G=B(this)}})}if(G){G.hover(function(J){I.wrapper.trigger("mouseover",[J])},function(J){I.wrapper.trigger("mouseout",[J])});G.click(function(J){H.trigger("click",[J]);A(J);return false})}I.wrapper.click(function(J){H.trigger("click",[J]);A(J);return false});H.click(function(J){A(J)});H.bind("disable",function(){I.wrapperInner.addClass(E.cls+"-disabled")}).bind("enable",function(){I.wrapperInner.removeClass(E.cls+"-disabled")});H.bind("check",function(){I.wrapper.addClass(E.cls+"-checked")}).bind("uncheck",function(){I.wrapper.removeClass(E.cls+"-checked")});B("img",I.wrapper).bind("dragstart",function(){return false}).bind("mousedown",function(){return false});if(window.getSelection){I.wrapper.css("MozUserSelect","none")}if(I.checked){I.wrapper.addClass(E.cls+"-checked")}if(I.disabled){I.wrapperInner.addClass(E.cls+"-disabled")}})}})(jQuery);(function(A){A.fn.hoverIntent=function(I,H){var J={sensitivity:7,interval:100,timeout:0};J=A.extend(J,H?{over:I,out:H}:I);var L,K,F,D;var E=function(M){L=M.pageX;K=M.pageY};var C=function(N,M){M.hoverIntent_t=clearTimeout(M.hoverIntent_t);if((Math.abs(F-L)+Math.abs(D-K))<J.sensitivity){A(M).unbind("mousemove",E);M.hoverIntent_s=1;return J.over.apply(M,[N])}else{F=L;D=K;M.hoverIntent_t=setTimeout(function(){C(N,M)},J.interval)}};var G=function(N,M){M.hoverIntent_t=clearTimeout(M.hoverIntent_t);M.hoverIntent_s=0;return J.out.apply(M,[N])};var B=function(P){var O=(P.type=="mouseover"?P.fromElement:P.toElement)||P.relatedTarget;while(O&&O!=this){try{O=O.parentNode}catch(P){O=this}}if(O==this){return false}var N=jQuery.extend({},P);var M=this;if(M.hoverIntent_t){M.hoverIntent_t=clearTimeout(M.hoverIntent_t)}if(P.type=="mouseover"){F=N.pageX;D=N.pageY;A(M).bind("mousemove",E);if(M.hoverIntent_s!=1){M.hoverIntent_t=setTimeout(function(){C(N,M)},J.interval)}}else{A(M).unbind("mousemove",E);if(M.hoverIntent_s==1){M.hoverIntent_t=setTimeout(function(){G(N,M)},J.timeout)}}};return this.mouseover(B).mouseout(B)}})(jQuery);(function(A){A.jScrollPane={active:[]};A.fn.jScrollPane=function(C){C=A.extend({},A.fn.jScrollPane.defaults,C);var B=function(){return false};return this.each(function(){var O=A(this);O.css("overflow","hidden");var X=this;if(A(this).parent().is(".jScrollPaneContainer")){var AC=C.maintainPosition?O.position().top:0;var L=A(this).parent();var d=L.innerWidth();var AD=L.outerHeight();var M=AD;A(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown",L).remove();O.css({top:0})}else{var AC=0;this.originalPadding=O.css("paddingTop")+" "+O.css("paddingRight")+" "+O.css("paddingBottom")+" "+O.css("paddingLeft");this.originalSidePaddingTotal=(parseInt(O.css("paddingLeft"))||0)+(parseInt(O.css("paddingRight"))||0);var d=O.innerWidth();var AD=O.innerHeight();var M=AD;O.wrap(A("<div></div>").attr({className:"jScrollPaneContainer"}).css({height:AD+"px",width:d+"px"}));A(document).bind("emchange",function(AE,AF,p){O.jScrollPane(C)})}if(C.reinitialiseOnImageLoad){var N=A.data(X,"jScrollPaneImagesToLoad")||A("img",O);var G=[];if(N.length){N.each(function(p,AE){A(this).bind("load",function(){if(A.inArray(p,G)==-1){G.push(AE);N=A.grep(N,function(AG,AF){return AG!=AE});A.data(X,"jScrollPaneImagesToLoad",N);C.reinitialiseOnImageLoad=false;O.jScrollPane(C)}}).each(function(AF,AG){if(this.complete||this.complete===undefined){this.src=this.src}})})}}var o=this.originalSidePaddingTotal;var l={height:"auto",width:d-C.scrollbarWidth-C.scrollbarMargin-o+"px"};if(C.scrollbarOnLeft){l.paddingLeft=C.scrollbarMargin+C.scrollbarWidth+"px"}else{l.paddingRight=C.scrollbarMargin+"px"}O.css(l);var m=O.outerHeight();var i=AD/m;if(i<0.99){var H=O.parent();H.append(A("<div></div>").attr({className:"jScrollPaneTrack"}).css({width:C.scrollbarWidth+"px"}).append(A("<div></div>").attr({className:"jScrollPaneDrag"}).css({width:C.scrollbarWidth+"px"}).append(A("<div></div>").attr({className:"jScrollPaneDragTop"}).css({width:C.scrollbarWidth+"px"}),A("<div></div>").attr({className:"jScrollPaneDragBottom"}).css({width:C.scrollbarWidth+"px"}))));var z=A(">.jScrollPaneTrack",H);var P=A(">.jScrollPaneTrack .jScrollPaneDrag",H);if(C.showArrows){var g;var AB;var S;var r;var j=function(){if(r>4||r%4==0){y(u+AB*b)}r++};var K=function(p){A("html").unbind("mouseup",K);g.removeClass("jScrollActiveArrowButton");clearInterval(S)};var Z=function(){A("html").bind("mouseup",K);g.addClass("jScrollActiveArrowButton");r=0;j();S=setInterval(j,100)};H.append(A("<a></a>").attr({href:"javascript:;",className:"jScrollArrowUp"}).css({width:C.scrollbarWidth+"px"}).html("Scroll up").bind("mousedown",function(){g=A(this);AB=-1;Z();this.blur();return false}).bind("click",B),A("<a></a>").attr({href:"javascript:;",className:"jScrollArrowDown"}).css({width:C.scrollbarWidth+"px"}).html("Scroll down").bind("mousedown",function(){g=A(this);AB=1;Z();this.blur();return false}).bind("click",B));var Q=A(">.jScrollArrowUp",H);var J=A(">.jScrollArrowDown",H);if(C.arrowSize){M=AD-C.arrowSize-C.arrowSize;z.css({height:M+"px",top:C.arrowSize+"px"})}else{var s=Q.height();C.arrowSize=s;M=AD-s-J.height();z.css({height:M+"px",top:s+"px"})}}var w=A(this).css({position:"absolute",overflow:"visible"});var D;var Y;var b;var u=0;var V=i*AD/2;var a=function(AE,AG){var AF=AG=="X"?"Left":"Top";return AE["page"+AG]||(AE["client"+AG]+(document.documentElement["scroll"+AF]||document.body["scroll"+AF]))||0};var f=function(){return false};var v=function(){n();D=P.offset(false);D.top-=u;Y=M-P[0].offsetHeight;b=2*C.wheelSpeed*Y/m};var E=function(p){v();V=a(p,"Y")-u-D.top;A("html").bind("mouseup",T).bind("mousemove",h);if(A.browser.msie){A("html").bind("dragstart",f).bind("selectstart",f)}return false};var T=function(){A("html").unbind("mouseup",T).unbind("mousemove",h);V=i*AD/2;if(A.browser.msie){A("html").unbind("dragstart",f).unbind("selectstart",f)}};var y=function(AE){AE=AE<0?0:(AE>Y?Y:AE);u=AE;P.css({top:AE+"px"});var AF=AE/Y;w.css({top:((AD-m)*AF)+"px"});O.trigger("scroll");if(C.showArrows){Q[AE==0?"addClass":"removeClass"]("disabled");J[AE==Y?"addClass":"removeClass"]("disabled")}};var h=function(p){y(a(p,"Y")-D.top-V)};var q=Math.max(Math.min(i*(AD-C.arrowSize*2),C.dragMaxHeight),C.dragMinHeight);P.css({height:q+"px"}).bind("mousedown",E);var k;var R;var I;var t=function(){if(R>8||R%4==0){y((u-((u-I)/2)))}R++};var AA=function(){clearInterval(k);A("html").unbind("mouseup",AA).unbind("mousemove",e)};var e=function(p){I=a(p,"Y")-D.top-V};var U=function(p){v();e(p);R=0;A("html").bind("mouseup",AA).bind("mousemove",e);k=setInterval(t,100);t()};z.bind("mousedown",U);H.bind("mousewheel",function(AE,AG){v();n();var AF=u;y(u-AG*b);var p=AF!=u;return !p});var F;var W;function c(){var p=(F-u)/C.animateStep;if(p>1||p<-1){y(u+p)}else{y(F);n()}}var n=function(){if(W){clearInterval(W);delete F}};var x=function(AF,p){if(typeof AF=="string"){$e=A(AF,O);if(!$e.length){return }AF=$e.offset().top-O.offset().top}H.scrollTop(0);n();var AE=-AF/(AD-m)*Y;if(p||!C.animateTo){y(AE)}else{F=AE;W=setInterval(c,C.animateInterval)}};O[0].scrollTo=x;O[0].scrollBy=function(AE){var p=-parseInt(w.css("top"))||0;x(p+AE)};v();x(-AC,true);A("*",this).bind("focus",function(AH){var AG=A(this);var AJ=0;while(AG[0]!=O[0]){AJ+=AG.position().top;AG=AG.offsetParent()}var p=-parseInt(w.css("top"))||0;var AI=p+AD;var AF=AJ>p&&AJ<AI;if(!AF){var AE=AJ-C.scrollbarMargin;if(AJ>p){AE+=A(this).height()+15+C.scrollbarMargin-AD}x(AE)}});if(location.hash){x(location.hash)}A(document).bind("click",function(AE){$target=A(AE.target);if($target.is("a")){var p=$target.attr("href");if(p&&p.substr(0,1)=="#"){x(p)}}});A.jScrollPane.active.push(O[0])}else{O.css({height:AD+"px",width:d-this.originalSidePaddingTotal+"px",padding:this.originalPadding});O.parent().unbind("mousewheel")}})};A.fn.jScrollPane.defaults={scrollbarWidth:10,scrollbarMargin:5,wheelSpeed:18,showArrows:true,arrowSize:0,animateTo:false,dragMinHeight:1,dragMaxHeight:99999,animateInterval:100,animateStep:3,maintainPosition:true,scrollbarOnLeft:false,reinitialiseOnImageLoad:false};A(window).bind("unload",function(){var C=A.jScrollPane.active;for(var B=0;B<C.length;B++){C[B].scrollTo=C[B].scrollBy=null}})})(jQuery);(function(A){A.event.special.mousewheel={setup:function(){var B=A.event.special.mousewheel.handler;if(A.browser.mozilla){A(this).bind("mousemove.mousewheel",function(C){A.data(this,"mwcursorposdata",{pageX:C.pageX,pageY:C.pageY,clientX:C.clientX,clientY:C.clientY})})}if(this.addEventListener){this.addEventListener((A.browser.mozilla?"DOMMouseScroll":"mousewheel"),B,false)}else{this.onmousewheel=B}},teardown:function(){var B=A.event.special.mousewheel.handler;A(this).unbind("mousemove.mousewheel");if(this.removeEventListener){this.removeEventListener((A.browser.mozilla?"DOMMouseScroll":"mousewheel"),B,false)}else{this.onmousewheel=function(){}}A.removeData(this,"mwcursorposdata")},handler:function(D){var B=Array.prototype.slice.call(arguments,1);D=A.event.fix(D||window.event);A.extend(D,A.data(this,"mwcursorposdata")||{});var E=0,C=true;if(D.wheelDelta){E=D.wheelDelta/120}if(D.detail){E=-D.detail/3}D.data=D.data||{};D.type="mousewheel";B.unshift(E);B.unshift(D);return A.event.handle.apply(this,B)}};A.fn.extend({mousewheel:function(B){return B?this.bind("mousewheel",B):this.trigger("mousewheel")},unmousewheel:function(B){return this.unbind("mousewheel",B)}})})(jQuery);(function(A){jQuery.fn.pngFix=function(B){B=jQuery.extend({blankgif:"images/aoa/1pxt.gif"},B);if(ACCUtils.isIE6()){jQuery(this).find("img[src$=.png]").each(function(){var G=jQuery(this);G.show();var N=G.attr("pngFixId");if(N){G.parent().find("span[pngFixId="+N+"]:first").remove()}else{N=new Date().getTime();G.attr("pngFixId",N)}var L="";var E="";var D=(G.attr("id"))?'id="'+G.attr("id")+'" ':"";var M=(G.attr("class"))?'class="'+G.attr("class")+'" ':"";var H=(G.attr("title"))?'title="'+G.attr("title")+'" ':"";var I=(G.attr("alt"))?'alt="'+G.attr("alt")+'" ':"";var F=(G.attr("align"))?"float:"+G.attr("align")+";":"";var C=(G.parent().attr("href"))?"cursor:hand;":"";var K='pngFixId="'+N+'"';if(this.style.border){L+="border:"+this.style.border+";";this.style.border=""}if(this.style.padding){L+="padding:"+this.style.padding+";";this.style.padding=""}if(this.style.margin){L+="margin:"+this.style.margin+";";this.style.margin=""}var J=(this.style.cssText);E+="<span "+D+M+H+I+K;E+='style="position:relative;white-space:pre-line;display:block;background:transparent;'+F+C;E+="width:"+G.width()+"px;height:"+G.height()+"px;";E+="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+G.attr("src")+"', sizingMethod='scale');";E+=J+'"></span>';if(L!=""){E='<span style="position:relative;display:block;'+L+C+"width:"+G.width()+"px;height:"+G.height()+'px;">'+E+"</span>"}G.hide();G.after(E)});jQuery(this).find("*").each(function(){var D=jQuery(this).css("background-image");if(D.indexOf(".png")!=-1){var C=D.split('url("')[1].split('")')[0];jQuery(this).css("background-image","none");jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+C+"',sizingMethod='scale')"}});jQuery(this).find("input[src$=.png]").each(function(){var C=jQuery(this).attr("src");jQuery(this).get(0).runtimeStyle.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+C+"', sizingMethod='scale');";jQuery(this).attr("src",B.blankgif)})}return jQuery}})(jQuery);var ACCUtils=function(){var functionLookup={};var loadingElements={};var dialogs=[];var ie6=$.browser.msie&&((navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 5.5")!=-1)||(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 6.0")!=-1));var priceOneEnabled=false;var priceTwoEnabled=false;var priceOneText=null;var priceTwoText=null;var textImageSuffix=null;var languageKey=null;var blockedByHeadline=null;var tracking=false;var subSessionKey=null;var debug=false;var ignoreHasChange=false;var bindButtonClick=function(buttons){buttons.each(function(){var el=$(this);el.click(function(e){if(e.target&&e.target.tagName.toLowerCase()!="a"){var href=el.find("a").attr("href");if(!ACCUtils.isEmpty(href)){if(href.indexOf("javascript:")==-1){location.href=href}else{href=href.replace("javascript:","");eval(href)}return false}}})})};var getTileInfoWidth=function(tileInfo){var width=0;width=getLargerWidth(tileInfo.find(".acc-tile-tooltip-headline span"),width);width=getLargerWidth(tileInfo.find(".acc-tile-tooltip-subheadline span"),width);width=getLargerWidth(tileInfo.find(".acc-tile-tooltip-blockedby-headline span"),width);width=getLargerWidth(tileInfo.find(".acc-tile-tooltip-blockedby-items span"),width);tileInfo.find(".acc-tile-tooltip-item").each(function(){width=getKeyValueWidth($(this),width)});tileInfo.find(".acc-tile-tooltip-hint div").each(function(){width=getKeyValueWidth($(this),width)});return width};var getLargerWidth=function(el,width){var elWidth=el.width();if(elWidth>width){return elWidth}return width};var getKeyValueWidth=function(el,width){var elWidth=0;el.find("span").each(function(){elWidth+=$(this).width()});if(elWidth>width){return elWidth}return width};var createDialogData=function(options){var escape=null;if(!ACCUtils.isEmpty(options.closeActionName)){escape=function(e){var activeDialog=dialogs[dialogs.length-1];if(e.keyCode==27&&activeDialog.id==options.id){ACCUtils.executeFunction([options.closeActionName]);return false}return true}}var reposition=function(again){var win=$(window);var dialog=$("#"+options.id);if(ie6){$("#"+options.id+"-interceptor").css({width:win.width(),height:win.height(),top:win.scrollTop(),left:win.scrollLeft()})}dialog.css({left:win.scrollLeft()+(win.width()/2)-(dialog.outerWidth()/2),top:win.scrollTop()+(win.height()/2)-(dialog.outerHeight()/2)});if(again){reposition(false)}};return{id:options.id,interceptorId:options.id+"-interceptor",reposition:reposition,escape:escape,tabs:options.tabs}};return{registerFunction:function(name,func){if($.isFunction(func)){functionLookup[name]=func}else{alert("ACCUtils: "+name+" is not a function!")}},executeFunction:function(name,id){var func=functionLookup[name];if($.isFunction(func)){func(id)}else{alert("ACCUtils: No function defined for "+name)}},hasClass:function(el,classes){for(var i=0;i<classes.length;i++){if(el.hasClass(classes[i])){return true}}return false},bindClick:function(el,actionName,id,ignoreClasses){el.click(function(){if(!ACCUtils.hasClass(el,ignoreClasses)){ACCUtils.executeFunction(actionName,id);el.unbind("click")}})},isIE6:function(){return ie6},registerLoadingElement:function(id){loadingElements[id]=false},finishedLoadingElement:function(id){loadingElements[id]=true},reinitLoadingElements:function(){loadingElements={}},isLoadingElementsFinished:function(){for(var element in loadingElements){if(!loadingElements[element]){return false}}return true},redrawWait:function(again){var wait=$("#acc-wait");var win=$(window);if(ie6){$("#acc-wait-interceptor").css({width:win.width(),height:win.height(),top:win.scrollTop(),left:win.scrollLeft()})}wait.css({top:win.scrollTop()+(win.height()/2)-(wait.outerHeight()/2),left:win.scrollLeft()+(win.width()/2)-(wait.outerWidth()/2)});if(again){ACCUtils.redrawWait(false)}},isEmpty:function(text){return !text||$.trim(text)==""||$.trim(text)=="&nbsp;"||$.trim(text)=="null"},openDialog:function(options){var hasHeadline=!ACCUtils.isEmpty(options.headline);options.id="acc-"+options.id;if(!options.width){options.width=600}var innerDialogWidthWidth=options.width;var outerDialogWidthWidth=options.width+73;if(!options.height){options.height=hasHeadline?382:340}var hasTabs=options.tabs&&typeof (options.tabs)==="object"&&options.tabs.length>0;var tabTemplate=[];if(hasTabs){var tabChildNodes=[];$.each(options.tabs,function(i){tabChildNodes.push({tagName:"div",id:this.id+"-tab",className:"acc-grey-tab"+(this.selected?" acc-grey-tab-selected":""),childNodes:[{tagName:"div",className:"acc-grey-tab-left",childNodes:[{tagName:"div",className:"acc-grey-tab-left-spacer",innerHTML:"&nbsp;"},{tagName:"a",href:this.selected?null:"javascript:ACCUtils.switchDialogTab('"+options.id+"', '"+this.id+"');",innerHTML:this.text}]},{tagName:"div",className:"acc-grey-tab-right",innerHTML:"&nbsp;"}]});if(i<options.tabs.length-1){tabChildNodes.push({tagName:"div",className:"acc-grey-tab-separator",innerHTML:"&nbsp;"})}});tabTemplate.push({tagName:"div",className:"acc-dialog-tabs",style:"width: "+outerDialogWidthWidth+"px;",childNodes:tabChildNodes})}var dialogData=createDialogData(options);var dialogZIndex=10000+(dialogs.length*2+1);var interceptorZIndex=10000+(dialogs.length*2);var contentChildNodes=[];if(hasHeadline){contentChildNodes.push({className:"acc-dialog-headline",style:"width: "+innerDialogWidthWidth+"px;",childNodes:[{className:"acc-dialog-headline-text",innerHTML:options.headline},{className:"acc-dialog-headline-line",style:"width: "+innerDialogWidthWidth+"px;",innerHTML:"&nsbp;"}]})}if(!ACCUtils.isEmpty(options.closeActionName)){if(ACCUtils.isEmpty(options.closeText)){options.closeText="Missing Text: Close"}contentChildNodes.push({className:"acc-dialog-close",childNodes:[{tagName:"a",href:"javascript:ACCUtils.executeFunction('"+options.closeActionName+"');",innerHTML:options.closeText}]})}contentChildNodes.push({className:"acc-dialog-content-wrapper",style:"height: "+(options.height-(hasHeadline?95:38))+"px; width: "+innerDialogWidthWidth+"px; top: "+(hasHeadline?74:27)+"px;",childNodes:options.content});var dialogTemplate=[{id:dialogData.id,className:"acc-dialog",style:"z-index: "+dialogZIndex+";",childNodes:$.merge(tabTemplate,[{className:"acc-dialog-top",style:"width: "+outerDialogWidthWidth+"px;",childNodes:[{className:"acc-dialog-top-left",style:hasTabs?"display: none;":"",innerHTML:"&nbsp;"},{className:"acc-dialog-top-center",style:"width: "+(outerDialogWidthWidth-(hasTabs?6:11))+"px;",innerHTML:"&nbsp;"},{className:"acc-dialog-top-right",innerHTML:"&nbsp;"}]},{className:"acc-dialog-content",style:"height: "+(options.height-11)+"px; width: "+(outerDialogWidthWidth)+"px;",childNodes:contentChildNodes},{className:"acc-dialog-bottom",style:"width: "+outerDialogWidthWidth+"px;",childNodes:[{className:"acc-dialog-bottom-left",innerHTML:"&nbsp;"},{className:"acc-dialog-bottom-center",style:"width: "+(outerDialogWidthWidth-11)+"px;",innerHTML:"&nbsp;"},{className:"acc-dialog-bottom-right",innerHTML:"&nbsp;"}]}])}];var interceptorTemplate=[{tagName:"div",id:dialogData.interceptorId,className:"acc-dialog-interceptor",style:"z-index: "+interceptorZIndex+";",innerHTML:"&nbsp;"}];var body=$("body");body.appendDom(interceptorTemplate);body.appendDom(dialogTemplate);$(window).bind("resize scroll",dialogData.reposition);dialogData.reposition();if(dialogData.escape){$("html").bind("keypress",dialogData.escape)}dialogs.push(dialogData);if(hasTabs){ACCUtils.activateButtonHover(null,null,$("#"+options.id+" .acc-grey-tab"))}},closeDialog:function(id){var tmpDialogs=[];$.each(dialogs,function(){if(this.id=="acc-"+id){$(window).unbind("resize scroll",this.reposition);if($.isFunction(this.escape)){$("html").unbind("keypress",this.escape)}$("#"+this.id).remove();$("#"+this.interceptorId).remove()}else{tmpDialogs.push(this)}dialogs=tmpDialogs})},switchDialogTab:function(dialogId,selectedTabId){var dialogData=null;$.each(dialogs,function(){if(this.id==dialogId){dialogData=this}});if(dialogData&&dialogData.tabs&&typeof (dialogData.tabs)==="object"&&dialogData.tabs.length>0){$.each(dialogData.tabs,function(){var tab=$("#"+this.id+"-tab");var tabContent=$("#"+this.id);var tabLink=tab.find("a");if(this.id==selectedTabId){tab.addClass("acc-grey-tab-selected");tab.removeClass("acc-grey-tab-hover");tabLink.removeAttr("href");tabContent.show();tabContent.find(".acc-scroll-container").jScrollPane();this.selected=true}else{tab.removeClass("acc-grey-tab-selected");tabLink.attr("href","javascript:ACCUtils.switchDialogTab('"+dialogData.id+"', '"+this.id+"');");tabContent.hide();this.selected=false}})}},redrawDialogTab:function(dialogId){var dialogData=null;$.each(dialogs,function(){if(this.id==dialogId){dialogData=this}});if(dialogData&&dialogData.tabs&&typeof (dialogData.tabs)==="object"&&dialogData.tabs.length>0){$.each(dialogData.tabs,function(){if(this.selected){$("#"+this.id+" .acc-scroll-container").jScrollPane()}})}},setPriceOneEnabled:function(enabled){priceOneEnabled=enabled},isPriceOneEnabled:function(){return priceOneEnabled},setPriceTwoEnabled:function(enabled){priceTwoEnabled=enabled},isPriceTwoEnabled:function(){return priceTwoEnabled},setPriceOneText:function(text){priceOneText=text},getPriceOneText:function(){return priceOneText},setPriceTwoText:function(text){priceTwoText=text},getPriceTwoText:function(){return priceTwoText},setTextImageSuffix:function(newTextImageSuffix){textImageSuffix=newTextImageSuffix},getTextImageSuffix:function(){return textImageSuffix},setLanguageKey:function(newLanguageKey){languageKey=newLanguageKey},getLanguageKey:function(){return languageKey},setDebug:function(enabled){debug=enabled},isDebug:function(){return debug},setIgnoreHasChange:function(enabled){ignoreHasChange=enabled},isIgnoreHasChange:function(){return ignoreHasChange},setTracking:function(enabled){tracking=enabled},isTracking:function(){return tracking},setSubSessionKey:function(subSession){subSessionKey=subSession},getSubSessionKey:function(){return subSessionKey},setBlockedByHeadline:function(text){blockedByHeadline=text},getBlockedByHeadline:function(){return blockedByHeadline},activateButtonHover:function(redButtons,greyButtons,greyTabs){if(redButtons){redButtons.hoverIntent({sensitivity:7,interval:10,timeout:0,over:function(){var el=$(this);if(!el.hasClass("acc-disabled")){el.addClass("acc-red-button-hover")}},out:function(){$(this).removeClass("acc-red-button-hover")}});bindButtonClick(redButtons)}if(greyButtons){greyButtons.hoverIntent({sensitivity:7,interval:10,timeout:0,over:function(){var el=$(this);if(!el.hasClass("acc-disabled")){el.addClass("acc-grey-button-hover")}},out:function(){$(this).removeClass("acc-grey-button-hover")}});bindButtonClick(greyButtons)}if(greyTabs){greyTabs.hoverIntent({sensitivity:7,interval:10,timeout:0,over:function(){var el=$(this);if(!el.hasClass("acc-disabled")&&!el.hasClass("acc-grey-tab-selected")){el.addClass("acc-grey-tab-hover")}},out:function(){$(this).removeClass("acc-grey-tab-hover")}});bindButtonClick(greyTabs)}},parseHierarchy:function(headlines,standard){var template=[];$.each(headlines,function(i){var headlineChildNodes=[];headlineChildNodes.push({tagName:"div",className:"acc-summary-abstract-headline-left",innerHTML:this.headline});headlineChildNodes.push({tagName:"div",className:"acc-clear",innerHTML:"&nbsp;"});template.push({tagName:"div",className:"acc-summary-abstract-headline",childNodes:headlineChildNodes});$.each(this.items,function(){template.push({tagName:"div",className:"acc-summary-abstract-item-left"+(standard?"":" acc-summary-abstract-item-left-small acc-summary-abstract-item-left-small-bold"),childNodes:[{innerHTML:standard?this.text:this.headline}]});if(!standard){template.push({tagName:"div",className:"acc-summary-abstract-item-right"+(standard?"":" acc-summary-abstract-item-right-bold"),innerHTML:ACCUtils.isEmpty(this.text)?"&nbsp;":this.text})}template.push({tagName:"div",className:"acc-clear",innerHTML:"&nbsp;"})});if(i<headlines.length-1){template.push({tagName:"div",className:"acc-summary-abstract-headline-spacer",innerHTML:"&nbsp;"})}});return template},parseSummaryBean:function(summaryBean,showPrices){var priceOneEnabled=ACCUtils.isPriceOneEnabled()&&showPrices;var headlineClass="acc-summary-abstract-headline-left";var itemClass="acc-summary-abstract-item-left";if(priceOneEnabled){headlineClass+=" acc-summary-abstract-headline-left-small";itemClass+=" acc-summary-abstract-item-left-small"}var template=[];var entriesLength=summaryBean.abstractEntries.length;$.each(summaryBean.abstractEntries,function(i){var headlineChildNodes=[];headlineChildNodes.push({tagName:"div",className:headlineClass,innerHTML:this.headline});if(priceOneEnabled){headlineChildNodes.push({tagName:"div",className:"acc-summary-abstract-headline-right",innerHTML:ACCUtils.isEmpty(this.priceOne)?"&nbsp;":this.priceOne})}headlineChildNodes.push({tagName:"div",className:"acc-clear",innerHTML:"&nbsp;"});template.push({tagName:"div",className:"acc-summary-abstract-headline",childNodes:headlineChildNodes});$.each(this.texts,function(){template.push({tagName:"div",className:itemClass,innerHTML:this.text});if(priceOneEnabled){template.push({tagName:"div",className:"acc-summary-abstract-item-right",innerHTML:ACCUtils.isEmpty(this.priceOne)?"&nbsp;":this.priceOne})}template.push({tagName:"div",className:"acc-clear",innerHTML:"&nbsp;"})});if(i<entriesLength-1){template.push({tagName:"div",className:"acc-summary-abstract-headline-spacer",innerHTML:"&nbsp;"})}});return template},createRedButton:function(href,text,id,rel){return{id:!ACCUtils.isEmpty(id)?id:null,className:"acc-red-button",childNodes:[{className:"acc-red-button-left",childNodes:[{tagName:"a",rel:ACCUtils.isEmpty(rel)?"":rel,href:href,innerHTML:text}]},{className:"acc-red-button-right",innerHTML:"&nbsp;"}]}},createGreyButton:function(href,text,id,rel){return{id:!ACCUtils.isEmpty(id)?id:null,className:"acc-grey-button",childNodes:[{className:"acc-grey-button-left",childNodes:[{tagName:"a",rel:ACCUtils.isEmpty(rel)?"":rel,href:href,innerHTML:text}]},{className:"acc-grey-button-right",innerHTML:"&nbsp;"}]}},getCheckboxState:function(parent,name){var checked=false;parent.find("input[type=checkbox][name="+name+"]").each(function(){checked=this.checked});return checked},getRadioButtonState:function(parent,name){var selectedValue;parent.find("input[type=radio][name="+name+"]").each(function(){if(this.checked){selectedValue=$(this).attr("value")}});return selectedValue},toBoolean:function(string){return string=="true"},getTextInputValue:function(parent,name){var value;parent.find("input[type=text][name="+name+"]").each(function(){value=$(this).attr("value")});return value},getComboboxValue:function(parent,name){return parent.find("select[name="+name+"]").selectedValues()[0]},getTextareaValue:function(parent,name){var value;parent.find("textarea[name="+name+"]").each(function(){value=$(this).attr("value")});return value},showError:function(headline,text,close){ACCUtils.openDialog({id:"error",closeText:close,closeActionName:"closeError",width:310,height:112,headline:headline,content:[{innerHTML:text}]})},closeError:function(){ACCUtils.closeDialog("error")},activateTileHover:function(tile){tile.hoverIntent({timeout:0,over:function(){tile.addClass("acc-tile-hover");$("body").appendDom([{id:"acc-tile-info",childNodes:[{className:"acc-tile-info-top",childNodes:[{className:"acc-tile-info-top-left",innerHTML:"&nbsp;"},{className:"acc-tile-info-top-center",innerHTML:"&nbsp;"},{className:"acc-tile-info-top-right",innerHTML:"&nbsp;"}]},{className:"acc-tile-info-content",childNodes:[]},{className:"acc-tile-info-bottom",childNodes:[{className:"acc-tile-info-bottom-left",innerHTML:"&nbsp;"},{className:"acc-tile-info-bottom-center",innerHTML:"&nbsp;"},{className:"acc-tile-info-bottom-right",innerHTML:"&nbsp;"}]}]}]);var tileInfo=$("#acc-tile-info");tileInfo.find(".acc-tile-info-content").append(tile.find(".acc-tile-tooltip").clone());tileInfo.find(".acc-tile-tooltip").show();var tileOffset=tile.offset();tileInfo.css({top:tileOffset.top-tileInfo.height()-5,left:tileOffset.left+tile.width()+5});var tileWidth=getTileInfoWidth(tileInfo);tileInfo.find(".acc-tile-info-top").width(tileWidth+11);tileInfo.find(".acc-tile-info-top-center").width(tileWidth);tileInfo.find(".acc-tile-info-bottom-center").width(tileWidth);tileInfo.find(".acc-tile-info-bottom").width(tileWidth+11);tileInfo.find(".acc-tile-info-content").width(tileWidth+11)},out:function(){$(this).removeClass("acc-tile-hover");$("#acc-tile-info").remove()}})},activateEquipmentHover:function(part){part.hoverIntent({timeout:0,over:function(){var tooltip=part.find(".acc-part-tooltip");if(tooltip.children().length>0){$("body").appendDom([{id:"acc-tile-info",childNodes:[{className:"acc-tile-info-top",childNodes:[{className:"acc-tile-info-top-left",innerHTML:"&nbsp;"},{className:"acc-tile-info-top-center",innerHTML:"&nbsp;"},{className:"acc-tile-info-top-right",innerHTML:"&nbsp;"}]},{className:"acc-tile-info-content",childNodes:[]},{className:"acc-tile-info-bottom",childNodes:[{className:"acc-tile-info-bottom-left",innerHTML:"&nbsp;"},{className:"acc-tile-info-bottom-center",innerHTML:"&nbsp;"},{className:"acc-tile-info-bottom-right",innerHTML:"&nbsp;"}]}]}]);var tileInfo=$("#acc-tile-info");tileInfo.find(".acc-tile-info-content").append(tooltip.clone());tileInfo.find(".acc-part-tooltip").show();var tileOffset=part.offset();var tileWidth=getTileInfoWidth(tileInfo);tileInfo.css({top:tileOffset.top-tileInfo.height()-5,left:tileOffset.left+5});tileInfo.find(".acc-tile-info-top").width(tileWidth+11);tileInfo.find(".acc-tile-info-top-center").width(tileWidth);tileInfo.find(".acc-tile-info-bottom-center").width(tileWidth);tileInfo.find(".acc-tile-info-bottom").width(tileWidth+11);tileInfo.find(".acc-tile-info-content").width(tileWidth+11)}},out:function(){$("#acc-tile-info").remove()}})},cutOptionsDescription:function(detailsContainerId){var descriptionContainer=$("#"+detailsContainerId+" .acc-part-details-text");var hiddenDescriptionContainer=descriptionContainer.find(".acc-part-details-text-hidden");var description=$.trim(hiddenDescriptionContainer.text());hiddenDescriptionContainer.remove();$("body").appendDom([{id:detailsContainerId+"-calculator",className:"acc-part-description-calculator",innerHTML:description}]);var calcDiv=$("#"+detailsContainerId+"-calculator");while(calcDiv.height()>45){description=description.substring(0,description.lastIndexOf(" "));description+="...";calcDiv[0].innerHTML=description}calcDiv.remove();descriptionContainer.find("img").remove();descriptionContainer[0].innerHTML=description},fragment:function(){var fragment=null;var url=window.location.href;var hashIndex=url.lastIndexOf("#");if(hashIndex!=-1){fragment=url.substring(hashIndex+1,url.length)}return fragment}}}();ACCUtils.registerFunction("closeError",ACCUtils.closeError);$(function(){ACCUtils.activateButtonHover($(".acc-red-button"),$(".acc-grey-button"),$(".acc-grey-tab"));$("a").focus(function(){$(this).blur()});$("#acc-wait-interceptor").appendTo($("body"));$("#acc-wait").appendTo($("body"));$("#acc-image-wait").appendTo($("body"))});$(window).bind("hashchange",function(A){if(ACCUtils.isIgnoreHasChange()){ACCUtils.setIgnoreHasChange(false)}else{ACCDWRMenuHandler.switchMenu(ACCUtils.fragment())}});var ACCDWRHandler=function(){var B="resultProcessor";var G={};var E=function(){ACCUtils.reinitLoadingElements();$(window).bind("resize scroll",function(){ACCUtils.redrawWait(true)});ACCUtils.redrawWait(true);$("#acc-wait-interceptor").show();$("#acc-wait").show()};var H=function(){if(ACCUtils.isLoadingElementsFinished()){$("#acc-wait").hide();$("#acc-wait-interceptor").hide();ACCUtils.reinitLoadingElements()}};var C=function(O){if(O.success){var L=O.updateBeans;for(var J=0;J<L.length;J++){var M=L[J];if(M){var P=M.beanName;var N=G[P];if(N==null){alert("ACCDWRHandler: Missing update function for bean with name '"+P+"'")}else{N(M)}}}}else{var K=O.message;if(K==null){K="ACCDWRHandler: AJAX Operation failed"}alert("Error: "+K)}ACCUtils.finishedLoadingElement(B);H()};var I=function(L){var K=[];for(var J=1;J<L.length;J++){K.push(L[J])}return K};var D=function(N,L){var J={};var K=ACCUtils.getSubSessionKey();if(K){J.msk=K}if(L){J.CONFIGURATION_INDEPENDENT="CONFIGURATION_INDEPENDENT"}var M={};M.callback=C;M.parameters=J;N.push(M)};var F=function(K){var J=I(K);D(J,false);return J};var A=function(K){var J=I(K);D(J,true);return J};return{registerUpdateFunction:function(K,J){if(K==null||K.length==0){alert('ACCDWRHandler: Illegal or missing view update bean name: "'+K+'"')}else{if($.isFunction(J)){G[K]=J}else{alert('ACCDWRHandler: Illegal view update function argument: "'+J+'"')}}},executeDWRService:function(J){ACCUtils.registerLoadingElement(B);E();J.apply(this,F(arguments))},executeDWRNotification:function(J){J.apply(this,A(arguments))},setStartWait:function(J){if($.isFunction(J)){E=J}else{alert('ACCDWRHandler: Illegal start function argument: "'+J+'"')}},setEndWait:function(J){if($.isFunction(J)){H=J}else{alert('ACCDWRHandler: Illegal end function argument: "'+J+'"')}}}}();var OuterView=function(){var D=[];var B="";var E=0;var F=0;var I=function(N,P){if(P&&P>0){E=parseInt(P)}for(var O=0;O<D.length;O++){L(O,N)}};var L=function(R,N){var S=H(R);var O=D[R].imageURL;var P=D[R].isPNG;if(ACCUtils.isIE6()&&P){$(N).appendDom([{tagName:"div",alt:"",id:S}]);$("#"+S).css("filter",'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod="scale", src="'+O+'")');$("#"+S).css("width","100%");$("#"+S).css("height","100%")}else{$(N).appendDom([{tagName:"img",src:O,alt:"",id:S}])}var Q=$("#"+S);if(R==E){Q.show()}else{Q.hide()}};var J=function(){return false};var A=function(N){N=N||window.event;F++;return false};var H=function(N){return"image"+B+N};var G=function(N){$("#"+H(N)).hide()};var M=function(N){$("#"+H(N)).show()};var C=function(){G(E);E=(E+1)%D.length;M(E);ACCDWRHandler.executeDWRNotification(accDWRImageServie.storeRotation,E)};var K=function(){G(E);E=(E-1)%D.length;if(E<0){E=(D.length-1)}M(E);ACCDWRHandler.executeDWRNotification(accDWRImageServie.storeRotation,E)};return{initOuter:function(N){D=Array();B=N},registerImage:function(N,O){D.push({imageURL:N,isPNG:O})},cleanImages:function(N){$(N).empty();D=[]},initImages:function(N,O){$(N).empty();I(N,O)},stepLeft:function(){C()},stepRight:function(){K()}}}();var ACCDWRConflictHandler=function(){var B={};var A=function(F,D,E){var G=[];if(D.length>0){G.push({className:"acc-conflict-headline",innerHTML:F});$.each(D,function(H){$.each(this.items,function(){B[this.partId]=this.text;var L="";if(E){L="acc-conflict-item-tiny"}var K=[];K.push({className:"acc-conflict-item-button "+L,childNodes:[{innerHTML:this.text}]});if(E){var J="&nbsp;";if(!ACCUtils.isEmpty(this.priceOne)){J=this.priceOne}K.push({className:"acc-conflict-item-price ",innerHTML:J})}var I=[];if(this.hasInfo){I.push({tagName:"a",href:"javascript:ACCUtils.executeFunction('partInfo', '"+this.partId+"');",childNodes:[{tagName:"img",src:"images/aoa/info.gif",alt:""}]})}K.push({className:"acc-conflict-item-info",childNodes:I});K.push({className:"acc-clear",innerHTML:"&nbsp;"});G.push({id:"acc-conflict-item_"+this.partId,className:"acc-conflict-item",childNodes:K})});if(H<D.length-1){G.push({className:"acc-conflict-spacer",innerHTML:"&nbsp;"})}})}return G};var C=function(D,E){$.each(D,function(){$.each(this.items,function(){var G=$("#acc-conflict-item_"+this.partId+" .acc-conflict-item-button");var F=E?"addSolutionPart":"removeSolutionPart";G.addClass("acc-pointer");ACCUtils.bindClick(G,F,this.partId,[])})})};ACCDWRHandler.registerUpdateFunction("conflictUpdateBean",function(F){if(F.conflict){ACCDWRTrackingHandler.startConflict();if($("#acc-conflict").length>0){ACCUtils.closeDialog("conflict")}var H=F.hasPrices;var E=[];if(!ACCUtils.isEmpty(F.description)){E.push({className:"acc-conflict-violated-rule",innerHTML:F.description})}var D=A(F.addHeadline,F.addResults,H);var G=A(F.removeHeadline,F.removeResults,H);ACCUtils.openDialog({id:"conflict",headline:F.headline,closeActionName:F.closeable?"closeConflictDialog":null,closeText:F.cancel,height:340,content:[{className:"acc-scroll-container",childNodes:$.merge($.merge(E,D),G)}]});C(F.addResults,true);C(F.removeResults,false);$("#acc-conflict .acc-scroll-container").jScrollPane()}else{ACCUtils.closeDialog("conflict")}});return{startConflict:function(){ACCDWRHandler.executeDWRService(accDWRConflictService.startConflict)},cancelConflict:function(){ACCDWRTrackingHandler.solvedConflict();B={};ACCDWRHandler.executeDWRService(accDWRConflictService.cancelConflict)},addSolutionPart:function(D){ACCDWRTrackingHandler.solvedConflict(D,B[D]);B={};ACCDWRHandler.executeDWRService(accDWRConflictService.addSolutionPart,D)},removeSolutionPart:function(D){ACCDWRTrackingHandler.solvedConflict(D,B[D]);B={};ACCDWRHandler.executeDWRService(accDWRConflictService.removeSolutionPart,D)},closeConflictDialog:function(){B={};ACCDWRConflictHandler.cancelConflict()}}}();ACCUtils.registerFunction("startConflict",ACCDWRConflictHandler.startConflict);ACCUtils.registerFunction("cancelConflict",ACCDWRConflictHandler.cancelConflict);ACCUtils.registerFunction("addSolutionPart",ACCDWRConflictHandler.addSolutionPart);ACCUtils.registerFunction("removeSolutionPart",ACCDWRConflictHandler.removeSolutionPart);ACCUtils.registerFunction("closeConflictDialog",ACCDWRConflictHandler.closeConflictDialog);var ACCDWREngineHandler=function(){var A=function(B){$.each(B,function(){$.each(this.filter,function(){$.each(this.values,function(){var C=$("#acc-engine-filter-"+this.id);C.removeClass("acc-engines-filter-value-selected");C.removeClass("acc-disabled");C.removeAttr("href");if(this.selected){C.addClass("acc-engines-filter-value-selected")}if(this.disabled){C.addClass("acc-disabled")}else{C.attr("href","javascript:ACCUtils.executeFunction('"+this.actionName+"', '"+this.id+"');")}})})})};ACCDWRHandler.registerUpdateFunction("engineUpdateBean",function(B){A(B.filter);var C=1;$.each(B.engines,function(){var F=$("#acc-model_"+this.id);if(this.visible){C++;if(C%2==0){F.addClass("acc-engines-content-table-row-even");F.removeClass("acc-engines-content-table-row-odd")}else{F.removeClass("acc-engines-content-table-row-even");F.addClass("acc-engines-content-table-row-odd")}var E=F.find(".acc-engines-content-table-text a");var D=E.parent();if(this.selected){E.removeAttr("href");D.addClass("acc-engine-content-table-selected")}else{E.attr("href","javascript:ACCDWREngineHandler.selectEngine('"+this.id+"');");D.removeClass("acc-engine-content-table-selected")}F.show()}else{F.hide()}});$("#acc-engines").show()});ACCDWRHandler.registerUpdateFunction("carlinePromotionUpdateBean",function(E){var D=[];var C=E.image&&!ACCUtils.isEmpty(E.image.src);if(C){D.push({id:"acc-carline-promotion-image",childNodes:[{tagName:"img",src:E.image.src,alt:""}]})}var B=[];if(!ACCUtils.isEmpty(E.headline)){B.push({id:"acc-carline-promotion-headline",innerHTML:E.headline})}if(!ACCUtils.isEmpty(E.text)){B.push({id:"acc-carline-promotion-text",innerHTML:E.text})}if(C){D.push({id:"acc-carline-promotion-text-container",childNodes:[{className:"acc-scroll-container",childNodes:B}]})}else{D=$.merge(D,B)}ACCUtils.openDialog({id:"carline-promotion",headline:E.diaglogHeadline,closeActionName:"closeCarlinePromotionDialog",closeText:E.close,width:560,height:350,content:[{className:"acc-scroll-container",childNodes:D}]});$("#acc-carline-promotion .acc-scroll-container").jScrollPane()});return{selectEngine:function(B){ACCDWRHandler.executeDWRService(accDWREngineService.selectEngine,B)},toggleEngineFilter:function(B){ACCDWRHandler.executeDWRService(accDWREngineService.toggleEngineFilter,B)},showCarlinePromotion:function(){ACCDWRHandler.executeDWRService(accDWREngineService.showCarlinePromotion)},closeCarlinePromotionDialog:function(){ACCUtils.closeDialog("carline-promotion")}}}();ACCUtils.registerFunction("selectEngine",ACCDWREngineHandler.selectEngine);ACCUtils.registerFunction("toggleEngineFilter",ACCDWREngineHandler.toggleEngineFilter);ACCUtils.registerFunction("closeCarlinePromotionDialog",ACCDWREngineHandler.closeCarlinePromotionDialog);var ACCDWRFinanceHandler=function(){ACCDWRHandler.registerUpdateFunction("financeViewBean",function(A){$("#acc-stage-info-finance-form").empty();$("#acc-stage-info-finance-form").appendDom([{tagName:"input",type:"hidden",name:"data",valu3:A.data}])});return{}}();var ACCDWRHeaderHandler=function(){var A=function(B,C){if(B.length>0){B[0].innerHTML=C}};ACCDWRHandler.registerUpdateFunction("headerUpdateBean",function(H){A($("#acc-stage-info-carline"),H.carline);A($("#acc-stage-info-model"),H.model);var F=$("#acc-stage-info-dealer");if(F.length>0&&!ACCUtils.isEmpty(H.dealerURL)){F.attr("href",H.dealerURL)}var C=$("#acc-stage-info-testdrive");if(C.length>0&&!ACCUtils.isEmpty(H.testdriveURL)){C.attr("href",H.testdriveURL)}var D=$("#acc-stage-dealer-red a");if(D.length>0&&!ACCUtils.isEmpty(H.dealerURL)){D.attr("href",H.dealerURL)}var E=$("#acc-stage-info-price-wrapper");if(H.showPrices){if(H.splitPrices){A($("#acc-stage-info-price-engine"),H.enginePriceValue);A($("#acc-stage-info-price-configuration"),H.configurationPriceValue);var B=$("#acc-stage-info-price-charges-container");if(ACCUtils.isEmpty(H.chargesPriceValue)){B.hide()}else{A($("#acc-stage-info-price-charges"),H.chargesPriceValue);B.show()}var G=$("#acc-stage-info-price-fuel-tax-container");if(ACCUtils.isEmpty(H.fuelTaxPriceValue)){G.hide()}else{A($("#acc-stage-info-price-fuel-tax"),H.fuelTaxPriceValue);G.show()}A($("#acc-stage-info-price"),H.buildPriceValue)}else{A($("#acc-stage-info-price"),H.price)}E.show()}else{E.hide()}});return{}}();var ACCDWRImageHandler=function(){var J=false;var D=false;var F=false;var H=false;var K=false;var G=false;var I=false;var E=function(M,S,T,P){var N=$(S);if(T.exterior&&T.showOuter360){B(M,T.exterior,T.fullscreen);M.hide();OuterView.initOuter(P);var R=T.images;for(var O=0;O<R.length;O++){var L=R[O];OuterView.registerImage(L.src,L.PNG)}OuterView.initImages(S);N.show()}else{N.hide();OuterView.cleanImages(S);var Q=M.parent().find("span");if(ACCUtils.isIE6()&&!T.exterior){M.show();Q.remove()}A(M,T.image.src,T.exterior,T.fullscreen)}};var A=function(N,M,P,O){if(N.attr("src")!=M){N.unbind("load");N.unbind("error");var L=new Image();L.src=M;if(!L.complete){var Q=$("#acc-image-wait");Q.show();var R=N.offset();Q.css({top:R.top+N.height()/2-Q.height()/2,left:R.left+N.width()/2-Q.width()/2});N.bind("load",function(){N.unbind("load");N.unbind("error");B(N,P,O);C(N,P);Q.hide()});N.bind("error",function(){N.unbind("load");N.unbind("error");Q.hide()});N.attr("src",M)}else{N.attr("src",M);B(N,P,O);C(N,P)}}else{B(N,P,O)}};var B=function(M,O,N){if(!N){var L=M.parent();var P=$("#acc-stage-image-horizont");if(O){L.addClass("acc-stage-image-exterior");L.removeClass("acc-stage-image-interior");P.show()}else{L.removeClass("acc-stage-image-exterior");L.addClass("acc-stage-image-interior");P.hide()}}};var C=function(M,N){if(ACCUtils.isIE6()){var L=M.parent();L.find("span").remove();if(N){L.pngFix()}else{M.show()}}};ACCDWRHandler.registerUpdateFunction("imageareaUpdateBean",function(j){D=j.exterior;F=j.showOuter360;H=j.convertible;K=j.roofClosed;G=j.hasCockpit;I=j.showCockpit;if(j.fullscreen){if(J){var c=$("#acc-zoom-menu-exterior");var R=$("#acc-zoom-menu-interior");var a=$("#acc-zoom-menu-left");var O=$("#acc-zoom-menu-right");var f=$("#acc-zoom-menu-left-outer");var Y=$("#acc-zoom-menu-right-outer");$("#acc-zoom-dimensions").hide();$("#acc-zoom-image").show();if(j.exterior){c.hide();R.show();if(j.showOuter360){a.hide();O.hide();f.show();Y.show()}else{a.show();O.show();f.hide();Y.hide()}}else{c.show();R.hide();a.hide();O.hide();f.hide();Y.hide()}if(j.convertible){var W=$("#acc-zoom-menu-open");var L=$("#acc-zoom-menu-closed");if(j.exterior){if(j.roofClosed){W.show();L.hide()}else{W.hide();L.show()}}else{W.hide();L.hide()}}if(j.hasCockpit){var d=$("#acc-zoom-menu-cockpitview");var T=$("#acc-zoom-menu-sideview");if(j.exterior){d.hide();T.hide()}else{if(j.showCockpit){d.hide();T.show()}else{d.show();T.hide()}}}$("#acc-zoom-menu-dimension").show();c.attr("href","javascript:ACCDWRImageHandler.toggleExterior();");R.attr("href","javascript:ACCDWRImageHandler.toggleExterior();")}else{var h=[];h.push({tagName:"a",id:"acc-zoom-menu-exterior",style:j.exterior?"display: none;":"",href:"javascript:ACCDWRImageHandler.toggleExterior();",innerHTML:$("#acc-stage-menu-exterior").text()});h.push({tagName:"a",id:"acc-zoom-menu-interior",style:j.exterior?"":"display: none;",href:"javascript:ACCDWRImageHandler.toggleExterior();",innerHTML:$("#acc-stage-menu-interior").text()});var Q=j.dimensionDraft&&j.dimensionDraft.src&&j.dimensions;if(Q){h.push({tagName:"a",id:"acc-zoom-menu-dimension",href:"javascript:ACCDWRImageHandler.showDimensions();",innerHTML:j.dimensions})}if(j.convertible){h.push({tagName:"a",id:"acc-zoom-menu-open",style:!j.roofClosed||!j.exterior?"display: none;":"",href:"javascript:ACCDWRImageHandler.toggleRoof();",innerHTML:$("#acc-stage-menu-open").text()});h.push({tagName:"a",id:"acc-zoom-menu-closed",style:j.roofClosed||!j.exterior?"display: none;":"",href:"javascript:ACCDWRImageHandler.toggleRoof();",innerHTML:$("#acc-stage-menu-closed").text()})}if(j.hasCockpit){h.push({tagName:"a",id:"acc-zoom-menu-cockpitview",style:j.showCockpit||j.exterior?"display: none;":"",href:"javascript:ACCDWRImageHandler.toggleView();",innerHTML:$("#acc-stage-menu-cockpitview").text()});h.push({tagName:"a",id:"acc-zoom-menu-sideview",style:!j.showCockpit||j.exterior?"display: none;":"",href:"javascript:ACCDWRImageHandler.toggleView();",innerHTML:$("#acc-stage-menu-sideview").text()})}h.push({tagName:"a",id:"acc-zoom-menu-left",style:j.exterior&&!j.showOuter360?"":"display: none;",href:"javascript:ACCDWRImageHandler.toggleView();",innerHTML:$("#acc-stage-menu-left").text()});h.push({tagName:"a",id:"acc-zoom-menu-right",style:j.exterior&&!j.showOuter360?"":"display: none;",href:"javascript:ACCDWRImageHandler.toggleView();",innerHTML:$("#acc-stage-menu-right").text()});h.push({tagName:"a",id:"acc-zoom-menu-left-outer",style:j.exterior&&j.showOuter360?"":"display: none;",href:"javascript:OuterView.stepLeft();",innerHTML:$("#acc-stage-menu-outer-left").text()});h.push({tagName:"a",id:"acc-zoom-menu-right-outer",style:j.exterior&&j.showOuter360?"":"display: none;",href:"javascript:OuterView.stepRight();",innerHTML:$("#acc-stage-menu-outer-right").text()});var g=[];g.push({id:"acc-zoom-menu",childNodes:h});g.push({id:"acc-zoom-image",childNodes:[{tagName:"img",src:"images/aoa/1pxt.gif",alt:""},{id:"acc-imageHolderOuter360Zoom",childNodes:[{id:"acc-imageHolderZoom"}]}]});if(Q){g.push({id:"acc-zoom-dimensions",style:"display: none;",childNodes:[{className:"acc-scroll-container",childNodes:[{tagName:"img",src:j.dimensionDraft.src,alt:""}]}]})}ACCUtils.openDialog({id:"zoom",closeActionName:"toggleFullscreen",closeText:j.close,content:g,height:610,width:928});J=true}E($("#acc-zoom-image img"),"#acc-imageHolderZoom",j,"zoom")}else{ACCUtils.closeDialog("zoom");J=false;E($("#acc-stage-image img"),"#acc-imageHolder",j,"normal");var e=$("#acc-stage-menu-zoom");if(j.hasFullscreen){e.show()}else{e.hide()}var b=$("#acc-stage-menu-exterior");var S=$("#acc-stage-menu-interior");var P=$("#acc-stage-menu-left");var V=$("#acc-stage-menu-right");var N=$("#acc-stage-menu-outer-left");var X=$("#acc-stage-menu-outer-right");if(j.exterior){b.hide();S.show();if(j.showOuter360){P.hide();V.hide();N.show();X.show()}else{P.show();V.show();N.hide();X.hide()}}else{b.show();S.hide();P.hide();V.hide();N.hide();X.hide()}if(j.convertible){var M=$("#acc-stage-menu-open");var Z=$("#acc-stage-menu-closed");if(j.exterior){if(j.roofClosed){M.show();Z.hide()}else{M.hide();Z.show()}}else{M.hide();Z.hide()}}if(j.hasCockpit){var U=$("#acc-stage-menu-cockpitview");var i=$("#acc-stage-menu-sideview");if(j.exterior){U.hide();i.hide()}else{if(j.showCockpit){U.hide();i.show()}else{U.show();i.hide()}}}}});return{toggleView:function(){ACCDWRHandler.executeDWRService(accDWRImageServie.toggleView)},toggleExterior:function(){ACCDWRHandler.executeDWRService(accDWRImageServie.toggleExterior)},toggleRoof:function(){ACCDWRHandler.executeDWRService(accDWRImageServie.toggleRoof)},toggleCockpit:function(){ACCDWRHandler.executeDWRService(accDWRImageServie.toggleCockpit)},toggleFullscreen:function(){ACCDWRHandler.executeDWRService(accDWRImageServie.toggleFullscreen)},showDimensions:function(){$("#acc-zoom-menu-dimension").hide();$("#acc-zoom-image").hide();$("#acc-zoom-dimensions").show();$("#acc-zoom-dimensions .acc-scroll-container").jScrollPane();var N=$("#acc-zoom-menu-exterior");var S=$("#acc-zoom-menu-interior");var L=$("#acc-zoom-menu-left");var Q=$("#acc-zoom-menu-right");var M=$("#acc-zoom-menu-left-outer");var O=$("#acc-zoom-menu-right-outer");var R=$("#acc-zoom-menu-cockpitview");var T=$("#acc-zoom-menu-sideview");var U=$("#acc-zoom-menu-open");var P=$("#acc-zoom-menu-closed");N.show();S.show();L.hide();Q.hide();M.hide();O.hide();U.hide();P.hide();R.hide();T.hide();if(D){N.attr("href","javascript:ACCDWRImageHandler.hideDimensions();")}else{S.attr("href","javascript:ACCDWRImageHandler.hideDimensions();")}},hideDimensions:function(){$("#acc-zoom-menu-dimension").show();$("#acc-zoom-dimensions").hide();$("#acc-zoom-image").show();var N=$("#acc-zoom-menu-exterior");var S=$("#acc-zoom-menu-interior");var L=$("#acc-zoom-menu-left");var Q=$("#acc-zoom-menu-right");var M=$("#acc-zoom-menu-left-outer");var O=$("#acc-zoom-menu-right-outer");var R=$("#acc-zoom-menu-cockpitview");var T=$("#acc-zoom-menu-sideview");var U=$("#acc-zoom-menu-open");var P=$("#acc-zoom-menu-closed");N.attr("href","javascript:ACCDWRImageHandler.toggleExterior();");S.attr("href","javascript:ACCDWRImageHandler.toggleExterior();");if(D){N.hide();S.show();if(H){if(K){U.show();P.hide()}else{U.hide();P.show()}}if(F){L.hide();Q.hide();M.show();O.show()}else{L.show();Q.show();M.hide();O.hide()}}else{N.show();S.hide();if(G){if(I){R.hide();T.show()}else{R.show();T.hide()}}}}}}();ACCUtils.registerFunction("toggleFullscreen",ACCDWRImageHandler.toggleFullscreen);var ACCDWRInfoHandler=function(){var B=null;var A=function(G,F,E){return{id:G,text:F,selected:E}};var C=function(G){var E=[];E.push({tagName:"option",valu3:"default",innerHTML:G.chooseModel});$.each(G.engineGroups,function(){var H=[];$.each(this.engines,function(){H.push({tagName:"option",valu3:this.id,innerHTML:this.name})});E.push({tagName:"optgroup",label:ACCUtils.isEmpty(this.name)?"":this.name,childNodes:H})});var F=[];F.push({className:"acc-model-info-compare-header-headline",childNodes:[{className:"acc-model-info-compare-header-headline-left",innerHTML:G.currentText},{className:"acc-model-info-compare-header-headline-right",innerHTML:G.compareText},{className:"acc-clear",innerHTML:"&nbsp;"}]});F.push({className:"acc-model-info-compare-header-chooser",childNodes:[{className:"acc-model-info-compare-header-chooser-left",innerHTML:G.modelText},{className:"acc-model-info-compare-header-chooser-right",childNodes:[{tagName:"select",childNodes:E}]},{className:"acc-clear",innerHTML:"&nbsp;"}]});if(ACCUtils.isPriceOneEnabled()){F.push({className:"acc-model-info-compare-header-price",childNodes:[{className:"acc-model-info-compare-header-price-current",innerHTML:G.priceOne},{className:"acc-model-info-compare-header-price-other",innerHTML:"&nbsp;"},{className:"acc-clear",innerHTML:"&nbsp;"}]})}return{className:"acc-model-info-compare-header",childNodes:F}};var D=function(G,E){var F=[];$.each(G,function(H){F.push({className:"acc-model-info-compare-headline",childNodes:[{innerHTML:this.headline}]});F.push({className:"acc-model-info-compare-headline-right",innerHTML:"&nbsp;"});F.push({className:"acc-clear",innerHTML:"&nbsp;"});$.each(this.items,function(){if(!E){F.push({className:"acc-model-info-compare-label",innerHTML:this.headline})}var I=ACCUtils.isEmpty(this.currentModelText);F.push({className:"acc-model-info-compare-current"+(I?" acc-model-info-compare-current-empty":""),childNodes:[{innerHTML:this.currentModelText}]});var J=ACCUtils.isEmpty(this.comparedModelText);F.push({className:"acc-model-info-compare-other "+(!this.same?"acc-model-info-diff":"")+(J?" acc-model-info-compare-other-empty":""),childNodes:[{innerHTML:this.comparedModelText}]});F.push({className:"acc-clear",innerHTML:"&nbsp;"})});if(H<G.length-1){F.push({className:"acc-model-info-compare-headline-spacer",innerHTML:"&nbsp;"})}});return F};ACCDWRHandler.registerUpdateFunction("partInfoUpdateBean",function(J){var H=[];var G=!ACCUtils.isEmpty(J.imageURL);if(G){H.push({id:"acc-part-info-image",childNodes:[{tagName:"img",src:J.imageURL,alt:""}]})}var E=[];if(!ACCUtils.isEmpty(J.text)){E.push({id:"acc-part-info-text",innerHTML:J.text})}if(!ACCUtils.isEmpty(J.description)){E.push({id:"acc-part-info-description",innerHTML:J.description})}if(J.packageContents.length>0){var I=[];for(var F=0;F<J.packageContents.length;F++){I.push({innerHTML:J.packageContents[F]})}if(!ACCUtils.isEmpty(J.packageContentsHeadline)){E.push({id:"acc-part-info-package-contents-headline",innerHTML:J.packageContentsHeadline})}E.push({id:"acc-part-info-package-contents",childNodes:I})}if(!ACCUtils.isEmpty(J.hint)){E.push({id:"acc-part-info-hint",innerHTML:J.hint})}if(G){H.push({id:"acc-part-info-text-container",childNodes:[{className:"acc-scroll-container",childNodes:E}]})}else{H=$.merge(H,E)}ACCUtils.openDialog({id:"part-info",headline:J.headline,closeActionName:"closePartInfoDialog",closeText:J.close,width:560,height:320,content:[{className:"acc-scroll-container",childNodes:H}]});$("#acc-part-info .acc-scroll-container").jScrollPane()});ACCDWRHandler.registerUpdateFunction("modelInfoUpdateBean",function(H){var P=[];var N=[];var F=B==null||ACCDWRInfoHandler.DETAIL_VIEW==B;if(H.showAbstract&&ACCDWRInfoHandler.DETAIL_VIEW==B){var J="";var E=[];if(ACCUtils.isPriceOneEnabled()&&H.modelHasPriceOne){J="acc-model-info-abstract-content-small";E.push({id:"acc-model-info-abstract-total",childNodes:[{id:"acc-model-info-abstract-total-left",innerHTML:H.totalPriceText},{id:"acc-model-info-abstract-total-right",innerHTML:H.completePriceOne},{id:"acc-clear",innerHTML:"&nbsp;"}]})}E.push({id:"acc-model-info-abstract-content",className:J,childNodes:[{className:"acc-scroll-container",childNodes:ACCUtils.parseSummaryBean(H.abstractBean,H.modelHasPriceOne)}]});N.push(A("acc-model-info-abstract",H.abstractText,F));P.push({id:"acc-model-info-abstract",style:F?"":"display: none;",childNodes:E})}F=(ACCDWRInfoHandler.MODEL_INFO==B||ACCDWRInfoHandler.TRIM_LINE==B)&&!H.hasEquipment;if(H.hasTechnicalData){N.push(A("acc-model-info-technicals",H.technicalDataText,F));var G=[];if(H.hasModels){G.push(C(H))}var L="";if(H.hasModels){if(ACCUtils.isPriceOneEnabled()){L="acc-model-info-technicals-content-tiny"}else{L="acc-model-info-technicals-content-small"}}G.push({id:"acc-model-info-technicals-content",className:L,childNodes:[{className:"acc-scroll-container",childNodes:ACCUtils.parseHierarchy(H.technicalDataHierarchy,false)}]});if(H.hasModels){G.push({className:"acc-model-info-replace-button",innerHTML:"&nbsp"})}P.push({id:"acc-model-info-technicals",style:F?"":"display: none;",childNodes:G});F=false}F=(ACCDWRInfoHandler.MODEL_INFO==B||ACCDWRInfoHandler.TRIM_LINE==B)&&H.hasEquipment;if(H.hasEquipment){N.push(A("acc-model-info-standards",H.standardEquipmentText,F));var M=[];if(H.hasModels){M.push(C(H))}var Q="";if(ACCUtils.isPriceOneEnabled()){Q="acc-model-info-standards-content-tiny"}else{Q="acc-model-info-standards-content-small"}M.push({id:"acc-model-info-standards-content",className:Q,childNodes:[{className:"acc-scroll-container",childNodes:ACCUtils.parseHierarchy(H.equipmentHierarchy,true)}]});if(H.hasModels){M.push({className:"acc-model-info-replace-button",innerHTML:"&nbsp"})}P.push({id:"acc-model-info-standards",style:F?"":"display: none;",childNodes:M});F=false}if(H.hasTrimInformation){N.push(A("acc-model-info-trim",H.trimLineText,F));var O=[];if(H.hasModels){O.push(C(H))}var K="";if(H.hasModels){if(ACCUtils.isPriceOneEnabled()){K="acc-model-info-trim-content-tiny"}else{K="acc-model-info-trim-content-small"}}var I=[];if(!ACCUtils.isEmpty(H.trimInformationHeadline)){I.push({id:"acc-model-info-trim-headline",innerHTML:H.trimInformationHeadline})}if(!ACCUtils.isEmpty(H.trimInformationText)){I.push({id:"acc-model-info-trim-text",innerHTML:H.trimInformationText})}O.push({id:"acc-model-info-trim-content",className:K,childNodes:[{className:"acc-scroll-container",childNodes:$.merge(I,ACCUtils.parseHierarchy(H.trimInformationHierarchy,true))}]});if(H.hasModels){O.push({className:"acc-model-info-replace-button",innerHTML:"&nbsp"})}P.push({id:"acc-model-info-trim",style:F?"":"display: none;",childNodes:O});F=false}ACCUtils.openDialog({id:"model-info",headline:H.headline,closeActionName:"closeModelInfoDialog",closeText:H.close,content:P,tabs:N,width:720,height:590});if(H.hasModels){$(".acc-model-info-compare-header-chooser-right select").change(function(){ACCDWRInfoHandler.modelCompare($(this).val())})}ACCUtils.redrawDialogTab("acc-model-info")});ACCDWRHandler.registerUpdateFunction("modelComparisonUpdateBean",function(J){if(ACCUtils.isPriceOneEnabled()){var E=$(".acc-model-info-compare-header-price-other");E.each(function(){this.innerHTML=J.comparedPriceOne});if($("#acc-model-info-compare-header-price-current").text()!=J.comparedPriceOne){E.addClass("acc-model-info-diff")}else{E.removeClass("acc-model-info-diff")}}var G=$("#acc-model-info-technicals-content .acc-scroll-container");G.empty();G.appendDom(D(J.techHierarchy,false));var Q=$("#acc-model-info-standards-content .acc-scroll-container");Q.empty();Q.appendDom(D(J.equipHierarchy,true));var L=$("#acc-model-info-trim-content .acc-scroll-container");L.empty();var H=[];var O=J.currentTrimInformationHeadline;var K=J.otherTrimInformationHeadline;if(!ACCUtils.isEmpty(O)||!ACCUtils.isEmpty(K)){var R=O!=K;H.push({className:"acc-model-info-trim-compare-headline acc-model-info-compare-current",innerHTML:ACCUtils.isEmpty(O)?"&nbsp;":O});H.push({className:"acc-model-info-trim-compare-headline acc-model-info-compare-other"+(R?" acc-model-info-diff":""),innerHTML:ACCUtils.isEmpty(K)?"&nbsp;":K});H.push({className:"acc-clear",innerHTML:"&nbsp;"})}var P=J.currentTrimInformationText;var F=J.otherTrimInformationText;if(!ACCUtils.isEmpty(P)||!ACCUtils.isEmpty(F)){var N=P!=F;H.push({className:"acc-model-info-trim-compare-text acc-model-info-compare-current",innerHTML:ACCUtils.isEmpty(P)?"&nbsp;":P});H.push({className:"acc-model-info-trim-compare-text acc-model-info-compare-other"+(N?" acc-model-info-diff":""),innerHTML:ACCUtils.isEmpty(F)?"&nbsp;":F});H.push({className:"acc-clear",innerHTML:"&nbsp;"})}L.appendDom($.merge(H,D(J.trimHierarchy,true)));var M=$(".acc-model-info-replace-button");M.empty();M.each(function(){var S="javascript:ACCDWRInfoHandler.replace('"+J.restartURL+"')";$(this).appendDom([ACCUtils.createGreyButton(S,J.restartText)])});ACCUtils.redrawDialogTab("acc-model-info");ACCUtils.activateButtonHover(null,$("#acc-model-info .acc-grey-button"),null);var I=0;$(".acc-model-info-compare-header-chooser-right select").each(function(){if($(this).val()==J.comparedModelId){I=this.selectedIndex}});$(".acc-model-info-compare-header-chooser-right select").each(function(){this.selectedIndex=I})});ACCDWRHandler.registerUpdateFunction("bookmarkGenerationUpdateBean",function(F){var G=[];G.push({id:"acc-generate-bookmark-text",innerHTML:F.text});G.push({tagName:"label",f0r:"acc-generate-bookmark-title",innerHTML:F.titleLabel});G.push({tagName:"input",type:"text",id:"acc-generate-bookmark-title",valu3:F.title});G.push({tagName:"label",f0r:"acc-generate-bookmark-link",innerHTML:F.linkLabel});G.push({tagName:"input",type:"text",id:"acc-generate-bookmark-link",valu3:F.link});var E=window.sidebar||document.all;if(E){G.push(ACCUtils.createRedButton("javascript:ACCDWRInfoHandler.bookmark();",F.add))}ACCUtils.openDialog({id:"generate-bookmark",headline:F.headline,closeActionName:"closeBookmarkDialog",closeText:F.close,height:E?248:197,content:G});ACCUtils.activateButtonHover($("#acc-generate-bookmark .acc-red-button"),null,null);$("#acc-generate-bookmark-link").select()});ACCDWRHandler.registerUpdateFunction("filterValueInfoUpdateBean",function(E){ACCUtils.openDialog({id:"filter-value-info",closeText:E.close,closeActionName:"closeFilterValueInfo",width:560,height:320,headline:E.headline,content:[{className:"acc-scroll-container",childNodes:[{innerHTML:E.text}]}]});$("#acc-filter-value-info .acc-scroll-container").jScrollPane()});return{TRIM_LINE:"trim-line",MODEL_INFO:"model-info",DETAIL_VIEW:"detail-view",partInfo:function(E){ACCDWRHandler.executeDWRService(accDWRInfoService.partInfo,E)},closePartInfoDialog:function(){ACCUtils.closeDialog("part-info")},filterValueInfo:function(E){ACCDWRHandler.executeDWRService(accDWRInfoService.filterValueInfo,E)},modelInfo:function(F,E){B=E;ACCDWRHandler.executeDWRService(accDWRInfoService.modelInfo,F)},modelCompare:function(E){if(E!="default"){ACCDWRTrackingHandler.actionStarted("compare_engine",ACCDWRTrackingHandler.getEngineComparePageName());ACCDWRHandler.executeDWRService(accDWRInfoService.modelCompare,E)}},closeModelInfoDialog:function(){ACCUtils.closeDialog("model-info")},closeFilterValueInfo:function(){ACCUtils.closeDialog("filter-value-info")},generateBookmark:function(){ACCDWRTrackingHandler.actionStarted("bookmark",ACCDWRTrackingHandler.getBookmarkPageName());ACCDWRHandler.executeDWRService(accDWRInfoService.generateBookmark)},closeBookmarkDialog:function(){ACCDWRTrackingHandler.actionEnded("bookmark",ACCDWRTrackingHandler.getBookmarkPageName());ACCUtils.closeDialog("generate-bookmark")},closeFilerValueInfoDialog:function(){ACCUtils.closeDialog("filter-value-info")},bookmark:function(){var F=$("#acc-generate-bookmark-title").val();var E=$("#acc-generate-bookmark-link").val();if(window.sidebar){window.sidebar.addPanel(F,E,"")}else{if(document.all){window.external.AddFavorite(E,F)}}ACCDWRInfoHandler.closeBookmarkDialog()},replace:function(E){ACCDWRTrackingHandler.actionEnded("compare_engine",ACCDWRTrackingHandler.getEngineComparePageName());window.location.href=E}}}();ACCUtils.registerFunction("partInfo",ACCDWRInfoHandler.partInfo);ACCUtils.registerFunction("closePartInfoDialog",ACCDWRInfoHandler.closePartInfoDialog);ACCUtils.registerFunction("modelInfo",ACCDWRInfoHandler.modelInfo);ACCUtils.registerFunction("modelCompare",ACCDWRInfoHandler.modelCompare);ACCUtils.registerFunction("closeModelInfoDialog",ACCDWRInfoHandler.closeModelInfoDialog);ACCUtils.registerFunction("closeBookmarkDialog",ACCDWRInfoHandler.closeBookmarkDialog);ACCUtils.registerFunction("closeFilterValueInfo",ACCDWRInfoHandler.closeFilterValueInfo);var ACCDWRMenuHandler=function(){ACCDWRHandler.registerUpdateFunction("menuUpdateBean",function(G){var B=1;var E=$("#acc-menu-item-first");var M=$("#acc-menu-item-last");$.each(G.entries,function(O){var V=$("#acc-menu_"+this.id);var S=$("#acc-menu_separator_"+this.id);if(this.show){V.show();S.show();var R=O<=0;var U=O>=G.entries.length-1;var T=V.find("a");var P=V.find("img");var N=this.entry.targetAddress;if(N){V.addClass("acc-menu-item-enabled");T.attr("href",N)}else{if(this.selected){V.addClass("acc-menu-item-enabled");T.removeAttr("href",N)}else{V.removeClass("acc-menu-item-enabled");T.removeAttr("href")}}var Q="images/aoa/"+B+"_";if(this.selected){V.removeClass("acc-menu-item-default");V.addClass("acc-menu-item-selected");Q+="nextGenMenuCounterSelected";S.removeClass("acc-menu-item-separator-default");S.removeClass("acc-menu-item-separator-successor");S.addClass("acc-menu-item-separator-selected");if(R){E.addClass("acc-menu-item-first-selected");E.removeClass("acc-menu-item-first-default")}if(U){M.addClass("acc-menu-item-last-selected");M.removeClass("acc-menu-item-last-default")}}else{V.addClass("acc-menu-item-default");V.removeClass("acc-menu-item-selected");if(N){Q+="nextGenMenuCounterEnabled"}else{Q+="nextGenMenuCounterDefault"}if(R){E.removeClass("acc-menu-item-first-selected");E.addClass("acc-menu-item-first-default")}if(U){M.removeClass("acc-menu-item-last-selected");M.addClass("acc-menu-item-last-default")}if(this.successorSelected){S.removeClass("acc-menu-item-separator-default");S.addClass("acc-menu-item-separator-successor");S.removeClass("acc-menu-item-separator-selected")}else{S.addClass("acc-menu-item-separator-default");S.removeClass("acc-menu-item-separator-successor");S.removeClass("acc-menu-item-separator-selected")}}Q+=".png";P.attr("src",Q);B++}else{V.hide();S.hide()}});if(G.next){var F=$("#acc-continue-top");var D=$("#acc-continue-bottom");var K=F.find("a");var J=D.find("a");if(G.next.entry.targetAddress){K.attr("href",G.next.entry.targetAddress);J.attr("href",G.next.entry.targetAddress);F.show();D.show()}else{K.removeAttr("href");J.removeAttr("href");F.hide();D.hide()}}else{F.hide();D.hide()}$("#acc-engines").hide();$("#acc-options").remove();$("#acc-summary").remove();var H=$("#acc-stage-info-details");var C=$("#acc-stage-info-dealer");var I=$("#acc-stage-info-testdrive");var L=$("#acc-stage-dealer-red");if(G.selectedMenuItemKey!="summary"){H.show();C.show();I.show();L.hide()}else{H.hide();C.hide();I.hide();L.show()}A(G.selectedMenuItemKey)});var A=function(C){if(!C){C="engine"}var D=window.location.href;var E=D;var B=E.lastIndexOf("#");if(B!=-1){E=E.substring(0,B)}E+="#"+C;if(D!=E){ACCUtils.setIgnoreHasChange(true);window.location.href=E}};return{switchMenu:function(B){ACCDWRHandler.executeDWRService(accDWRMenuService.switchMenu,B)}}}();var ACCDWROptionsHandler=function(){var G=function(L,K,M){var N=$("#acc-"+M+"-headline .acc-tiles-headline-small");if(N.length>0){N[0].innerHTML=" "+L}$.each(K,function(R){var T=$("#acc-"+M+"-tile_"+this.htmlId+"_"+R);T.unbind("click");T.removeClass("acc-tile-highlighted");T.removeClass("acc-disabled");T.removeClass("acc-pointer");if(this.visible){T.show();var Q;if(this.image&&!ACCUtils.isEmpty(this.image.src)){Q=this.image.src}else{Q="images/aoa/"+M+"-tile_default.jpg"}T.css({background:"url('"+Q+"')"});if(this.selected){T.addClass("acc-tile-highlighted")}if(this.blocked||this.included){T.addClass("acc-disabled")}if(this.actionName){T.addClass("acc-pointer");ACCUtils.bindClick(T,this.actionName,this.id,[])}T.find(".acc-tile-tooltip-hint").remove();var P=B(this);if(P){T.find(".acc-tile-tooltip").appendDom([P])}var V=T.find(".acc-tile-tooltip-blockedby-headline");var S=T.find(".acc-tile-tooltip-blockedby-items");if(this.showBlockedBy){S.empty();for(var O=0;O<this.blockedBy.length;O++){S.appendDom([{className:"acc-tile-tooltip-blockedby-item",childNodes:[{tagName:"span",innerHTML:this.blockedBy[O]}]}])}V.show();S.show()}else{V.hide();S.hide()}C(T.find(".acc-tile-tooltip-headline"),this.tooltipHeadline,false);C(T.find(".acc-tile-tooltip-subheadline"),this.tooltipSubHeadline,true);if(ACCUtils.isPriceOneEnabled()){var U=T.find(".acc-tile-tooltip-price-one");C(U,this.priceOne,false);if(this.standard||ACCUtils.isEmpty(this.priceOne)||this.priceOne=="-"){U.hide()}else{U.show()}}}else{T.hide()}})};var C=function(L,O,N){if(L&&L.length>0){var K=L.find("span:last");if(K&&K.length>0){var M=ACCUtils.isEmpty(O);K[0].innerHTML=M?"&nbsp;":O;if(M&&N){L.hide()}}}};var D=function(K){$.each(K,function(){var L=this;$.each(this.parts,function(Q){var N=$("#acc-part_"+L.id+"_"+this.htmlId+"_"+Q);var M=$("#acc-part-details_"+L.id+"_"+this.htmlId+"_"+Q);var P=this.selected;var S=this.standard;var W=this.included;var T=this.blocked;N.unbind("click");N.removeClass("acc-part-standard");N.removeClass("acc-part-selected");N.removeClass("acc-part-included");N.removeClass("acc-disabled");N.removeClass("acc-pointer");M.removeClass("acc-disabled");if(S){N.addClass("acc-part-standard")}else{if(P){N.addClass("acc-part-selected")}else{if(W){N.addClass("acc-part-included")}}}if(T){N.addClass("acc-disabled");M.addClass("acc-disabled")}var Y=N.find(".acc-part-tooltip");Y.empty();if(this.showBlockedBy){var V=[];for(var R=0;R<this.blockedBy.length;R++){V.push({className:"acc-tile-tooltip-blockedby-item",childNodes:[{tagName:"span",innerHTML:this.blockedBy[R]}]})}Y.appendDom([{className:"acc-tile-tooltip-blockedby-headline",childNodes:[{tagName:"span",innerHTML:ACCUtils.getBlockedByHeadline()}]},{className:"acc-tile-tooltip-blockedby-items",childNodes:V}])}var X=N.find("span");if(X.length>0){X[0].innerHTML=this.text}var U=N.find(".acc-part-price");if(U.length>0){if(ACCUtils.isPriceOneEnabled()&&this.priceOne){U[0].innerHTML=this.priceOne}else{U[0].innerHTML="&nbsp;"}}var O=M.find("img");if(this.image){O.attr("src",this.image.src)}else{O.attr("src","images/aoa/1pxt.gif")}if(this.actionName){N.addClass("acc-pointer");ACCUtils.bindClick(N,this.actionName,this.id,[])}})})};var I=function(M,N,K,O,L){return[{id:"acc-"+O+"-headline",className:"acc-tiles-headline",childNodes:[{tagName:"span",className:"acc-tiles-headline-big",innerHTML:M},{tagName:"span",className:"acc-tiles-headline-small",innerHTML:" "+N}]},{id:"acc-"+O+"-tiles",className:"acc-tiles",childNodes:F(K,O+"-tile",L)}]};var F=function(K,N,L){var M=[];$.each(K,function(R){var X="";if(this.selected){X+=" acc-tile-highlighted"}if(this.blocked||this.included){X+=" acc-disabled"}var O;if(this.image&&!ACCUtils.isEmpty(this.image.src)){O=this.image.src}else{O="images/aoa/"+N+"_default.jpg"}var T="background: url('"+O+"');";if(!this.visible){T+=" display: none;"}var V=[];V.push({className:"acc-tile-tooltip-headline",childNodes:[{tagName:"span",innerHTML:ACCUtils.isEmpty(this.tooltipHeadline)?"&nbsp;":this.tooltipHeadline}]});V.push({className:"acc-tile-tooltip-subheadline",style:ACCUtils.isEmpty(this.tooltipSubHeadline)?"display: none":"",childNodes:[{tagName:"span",innerHTML:ACCUtils.isEmpty(this.tooltipSubHeadline)?"&nbsp;":this.tooltipSubHeadline}]});V.push({className:"acc-tile-tooltip-blockedby-headline",style:this.showBlockedBy?"":"display: none",childNodes:[{tagName:"span",innerHTML:ACCUtils.getBlockedByHeadline()}]});var W=[];if(this.showBlockedBy){for(var Q=0;Q<this.blockedBy.length;Q++){W.push({className:"acc-tile-tooltip-blockedby-item",childNodes:[{tagName:"span",innerHTML:this.blockedBy[Q]}]})}}V.push({className:"acc-tile-tooltip-blockedby-items",style:this.showBlockedBy?"":"display: none",childNodes:W});var P=[];$.each(this.tooltipTexts,function(){var Y=[];if(!ACCUtils.isEmpty(this.title)){Y.push({tagName:"span",className:"acc-tile-tooltip-title",innerHTML:this.title})}if(!ACCUtils.isEmpty(this.text)){Y.push({tagName:"span",className:"acc-tile-tooltip-content",innerHTML:this.text})}P.push({className:"acc-tile-tooltip-item",childNodes:Y})});V.push({className:"acc-tile-tooltip-items",childNodes:$.merge(P,[{className:"acc-clear",innerHTML:"&nbsp;"}])});if(ACCUtils.isPriceOneEnabled()){var U=[];if(!ACCUtils.isEmpty(ACCUtils.getPriceOneText())){U.push({tagName:"span",className:"acc-tile-tooltip-title",innerHTML:ACCUtils.getPriceOneText()+": "})}U.push({tagName:"span",className:"acc-tile-tooltip-content",innerHTML:this.priceOne});V.push({className:"acc-tile-tooltip-price-one",style:this.standard||ACCUtils.isEmpty(this.priceOne)||this.priceOne=="-"?"display: none;":"",childNodes:U})}var S=B(this);if(S){V.push(S)}M.push({id:"acc-"+N+"_"+this.htmlId+"_"+R,className:"acc-tile "+L+X,style:T,childNodes:[{innerHTML:"&nbsp;"},{className:"acc-tile-tooltip",style:"display: none;",childNodes:V}]})});M.push({className:"acc-clear",innerHTML:"&nbsp;"});return M};var B=function(K){if(K.hasHints){var L=[];$.each(K.tooltipHintTexts,function(N){if(!ACCUtils.isEmpty(this.title)){L.push({childNodes:[{tagName:"span",className:"acc-tile-tooltip-title",innerHTML:this.title}]})}for(var M=0;M<this.texts.length;M++){L.push({childNodes:[{tagName:"span",className:"acc-tile-tooltip-content",innerHTML:this.texts[M]}]})}if(N<K.tooltipHintTexts.length-1){L.push({className:"acc-tile-tooltip-hint-spacer",innerHTML:"&nbsp;"})}});return{className:"acc-tile-tooltip-hint",childNodes:L}}return null};var J=function(L){var K=I(L.exteriorHeadline,L.exteriorSelected,L.exteriorParts,"exterior-colors","acc-tile-exterior-color");var M=[];if(L.showTop){M=I(L.topHeadline,L.topSelected,L.topParts,"exterior-top-colors","acc-tile-exterior-color")}return $.merge(K,M)};var E=function(K,L){$.each(K,function(M){var N=$("#acc-"+L+"-tile_"+this.htmlId+"_"+M);if(this.actionName){N.addClass("acc-pointer");ACCUtils.bindClick(N,this.actionName,this.id,[])}ACCUtils.activateTileHover(N)})};var H=function(M,K){var L=[];$.each(M,function(N){var O=this;L.push({id:"acc-part-section_"+this.id,className:"acc-part-section-headline",innerHTML:this.headline});var P=this.parts;$.each(P,function(R){var Q=this.selected;var T=this.standard;var Y=this.included;var U=this.blocked;var X="";if(T){X="acc-part-standard"}else{if(Q){X="acc-part-selected"}else{if(Y){X="acc-part-included"}}}if(U){X+=" acc-disabled"}var b=[];if(ACCUtils.isPriceOneEnabled()){var c="&nbsp;";if(this.priceOne){c=this.priceOne}b.push({className:"acc-part-price",innerHTML:c})}b.push({tagName:"span",innerHTML:this.text});b.push({className:"acc-clear",innerHTML:"&nbsp;"});var V=[];if(this.showBlockedBy){var W=[];for(var S=0;S<this.blockedBy.length;S++){W.push({className:"acc-tile-tooltip-blockedby-item",childNodes:[{tagName:"span",innerHTML:this.blockedBy[S]}]})}V.push({className:"acc-tile-tooltip-blockedby-headline",childNodes:[{tagName:"span",innerHTML:ACCUtils.getBlockedByHeadline()}]});V.push({className:"acc-tile-tooltip-blockedby-items",childNodes:W})}L.push({id:"acc-part_"+O.id+"_"+this.htmlId+"_"+R,className:"acc-part "+X,childNodes:[{className:"acc-part-content",childNodes:b},{className:"acc-part-tooltip",style:"display: none",childNodes:V}]});if(this.image||this.description||this.hasInfo){var a=[];if(this.description){a.push({className:"acc-part-details-text",childNodes:[{tagName:"img",alt:"",src:"images/aoa/wait.gif"},{className:"acc-part-details-text-hidden",innerHTML:this.description}]})}if(this.hasInfo){a.push({className:"acc-part-details-link",childNodes:[{tagName:"a",href:"javascript:ACCUtils.executeFunction('partInfo', '"+this.id+"');",innerHTML:K}]})}var Z;if(this.image){Z={className:"acc-part-details-image",childNodes:[{tagName:"img",alt:"",src:this.image.src}]}}else{Z={className:"acc-part-details-image",innerHTML:"&nbsp;"}}L.push({id:"acc-part-details_"+O.id+"_"+this.htmlId+"_"+R,className:"acc-part-details"+(U?" acc-disabled":""),childNodes:[Z,{className:"acc-part-details-description",childNodes:a},{className:"acc-clear",innerHTML:"&nbsp;"}]})}if(R<P.length-1){L.push({className:"acc-part-separator",innerHTML:"&nbsp;"})}});if(N<M.length-1){L.push({className:"acc-part-section-separator",innerHTML:"&nbsp;"})}});return L};var A=function(K){$.each(K,function(){var L=this;$.each(this.parts,function(N){var M=$("#acc-part_"+L.id+"_"+this.htmlId+"_"+N);if(this.actionName){M.addClass("acc-pointer");ACCUtils.bindClick(M,this.actionName,this.id,[])}ACCUtils.activateEquipmentHover(M);if(this.description){ACCUtils.cutOptionsDescription("acc-part-details_"+L.id+"_"+this.htmlId+"_"+N)}})})};ACCDWRHandler.registerUpdateFunction("optionsUpdateBean",function(L){var K=$("#acc-options");if(K.length>0&&L.updateOnly){G(L.exteriorSelected,L.exteriorParts,"exterior-colors");if(L.showTop){G(L.topSelected,L.topParts,"exterior-top-colors")}G(L.wheelsSelected,L.wheelsParts,"exterior-wheels");G(L.interiorSelected,L.interiorParts,"interior");D(L.partSections);$("#acc-options-options .acc-scroll-container").jScrollPane()}else{K.remove();$("#acc-content").appendDom([{id:"acc-options",childNodes:[{id:"acc-options-tiles",childNodes:[{id:"acc-options-tiles-top",childNodes:[{id:"acc-options-colors",childNodes:J(L)},{id:"acc-options-wheels",childNodes:I(L.wheelsHeadline,L.wheelsSelected,L.wheelsParts,"exterior-wheels","acc-tile-exterior-wheel")},{className:"acc-clear",innerHTML:"&nbsp;"}]},{id:"acc-options-tiles-bottom",childNodes:I(L.interiorHeadline,L.interiorSelected,L.interiorParts,"interior","acc-tile-interior")}]},{id:"acc-options-options",childNodes:[{className:"acc-scroll-container",childNodes:H(L.partSections,L.details)}]}]},{className:"acc-clear",innerHTML:"&nbsp;"}]);E(L.exteriorParts,"exterior-colors");if(L.showTop){E(L.topParts,"exterior-top-colors")}E(L.interiorParts,"interior");E(L.wheelsParts,"exterior-wheels");A(L.partSections);$("#acc-options-options .acc-scroll-container").jScrollPane()}});return{selectTop:function(K){ACCDWRHandler.executeDWRService(accDWROptionsService.selectTop,K)},selectWithoutContrast:function(){ACCDWRHandler.executeDWRService(accDWROptionsService.selectWithoutContrast)},addPart:function(K){ACCDWRHandler.executeDWRService(accDWROptionsService.addPart,K)},addWheel:function(K){ACCDWRHandler.executeDWRService(accDWROptionsService.addWheel,K)},removePart:function(K){ACCDWRHandler.executeDWRService(accDWROptionsService.removePart,K)}}}();ACCUtils.registerFunction("selectTop",ACCDWROptionsHandler.selectTop);ACCUtils.registerFunction("selectWithoutContrast",ACCDWROptionsHandler.selectWithoutContrast);ACCUtils.registerFunction("addPart",ACCDWROptionsHandler.addPart);ACCUtils.registerFunction("addWheel",ACCDWROptionsHandler.addWheel);ACCUtils.registerFunction("removePart",ACCDWROptionsHandler.removePart);var ACCDWRSummaryHandler=function(){var G="STEP_ONE";var V="STEP_TWO";var C="&nbsp;";var E="&nbsp;";var U=false;var P=false;var R=G;var I=function(Y,b,X,Z,a){return[{id:"acc-input-"+Y+"-"+b,tagName:"input",type:(a?"checkbox":"radio"),name:Y,valu3:b,checked:Z?"checked":""},{tagName:"label",f0r:"acc-input-"+Y+"-"+b,innerHTML:X}]};var D=function(Z,Y,X){var a=[];if(Z){var c=[];if(Y||X){var b=[];if(Y){b.push({className:"acc-pdf-equipment-option-checkbox-option",childNodes:I(Y.name,Y.value,Y.label,Y.selected,true)})}if(X){b.push({className:"acc-pdf-equipment-option-checkbox-option",childNodes:I(X.name,X.value,X.label,X.selected,true)})}c.push({className:"acc-pdf-equipment-option-checkbox-options",childNodes:b})}a.push({className:"acc-pdf-equipment-option",childNodes:$.merge([{className:"acc-pdf-equipment-option-checkbox",childNodes:I(Z.name,Z.value,Z.label,Z.selected,true)}],c)})}return a};var J=function(X,Z){var Y=[];if(X){Y.push({className:"acc-pdf-images-option-item",childNodes:I(X.name,X.value,X.label,X.selected,true)})}if(Z){Y.push({className:"acc-pdf-images-option-item",childNodes:I(Z.name,Z.value,Z.label,Z.selected,true)})}return[{className:"acc-pdf-images-option",childNodes:Y}]};var O=function(c,h,b){var f=[];if(ACCUtils.isPriceOneEnabled()&&c.priceOneCheckbox){var Y=[];Y.push({style:"display: none;",childNodes:I(c.priceOneCheckbox.name,c.priceOneCheckbox.value,c.priceOneCheckbox.label,true)});$.each(c.priceOneOptions,function(){Y.push({className:"acc-pdf-price-option",childNodes:I(this.name,this.value,this.label,this.selected,false)})});Y.push({className:"acc-clear",innerHTML:"&nbsp;"});f.push({className:"acc-pdf-price-headline",style:c.showPriceSection?"":"display: none;",innerHTML:c.priceHeadline});f.push({className:"acc-pdf-price-options",style:c.showPriceSection?"":"display: none;",childNodes:Y})}var Z=D(c.specialEquipmentCheckbox,c.specialPicturesCheckbox,c.specialDetailsCheckbox);var g=D(c.standardEquipmentCheckbox,c.standardPicturesCheckbox,c.standardDetailsCheckbox);var X=D(c.technicalDataCheckbox);var a=$.merge($.merge(Z,g),X);a.push({className:"acc-clear",innerHTML:"&nbsp;"});f.push({className:"acc-pdf-equipment-headline",innerHTML:c.configurationHeadline});f.push({className:"acc-pdf-equipment-options",childNodes:a});if(c.showPictureSection){f.push({className:"acc-pdf-images-headline",innerHTML:c.pictureHeadline});var e=[];if(c.exteriorSmallCheckbox||c.interiorSmallCheckbox){e=J(c.exteriorSmallCheckbox,c.interiorSmallCheckbox)}var d=[];if(c.exteriorBigCheckbox||c.interiorBigCheckbox){d=J(c.exteriorBigCheckbox,c.interiorBigCheckbox)}f.push({className:"acc-pdf-images-options",childNodes:$.merge($.merge(e,d),[{className:"acc-clear",innerHTML:"&nbsp;"}])})}if(b){f.push(ACCUtils.createRedButton("javascript:ACCDWRSummaryHandler.createPDF();",h))}return f};var T=function(X){return{className:"acc-mail-input",childNodes:[{tagName:"label",className:"acc-mail-label",f0r:"acc-mail-"+X.name,innerHTML:X.label},{tagName:"input",id:"acc-mail-"+X.name,type:"text",name:X.name,value:X.value},{className:"acc-clear",innerHTML:"&nbsp;"}]}};var H=function(X){return{className:"acc-mail-input",childNodes:[{tagName:"label",className:"acc-mail-label",f0r:"acc-mail-"+X.name,innerHTML:X.label},{tagName:"textarea",id:"acc-mail-"+X.name,name:X.name,value:X.value,cols:"100",rows:"5"},{className:"acc-clear",innerHTML:"&nbsp;"}]}};var L=function(Y){var Z=[];Z.push({className:"acc-mail-options-headline",innerHTML:Y.copyLabel});var a=[];$.each(Y.copy,function(){a.push({className:"acc-mail-options-item",childNodes:I(this.name,this.value,this.label,this.selected,false)})});a.push({className:"acc-clear",innerHTML:"&nbsp;"});Z.push({className:"acc-mail-options-items",childNodes:a});if(Y.pdfEnabled&&Y.pdfUserSelectEnabled){var X=[];$.each(Y.pdf,function(){X.push({className:"acc-mail-options-item",childNodes:I(this.name,this.value,this.label,this.selected,false)})});X.push({className:"acc-clear",innerHTML:"&nbsp;"});Z.push({className:"acc-mail-options-headline",innerHTML:Y.pdfLabel});Z.push({className:"acc-mail-options-items",childNodes:X})}return Z};var S=function(X){var Y=[{id:"acc-mail-mail-container",childNodes:[{id:"acc-mail-headline",innerHTML:X.text},T(X.fromMail),T(X.toMail),T(X.subject),H(X.message),{id:"acc-mail-options",childNodes:L(X)}]},{id:"acc-mail-pdf-container",style:"display: none;",childNodes:O(X.pdfInputBean,X.ok,false)}];Y.push(ACCUtils.createRedButton("javascript:ACCDWRSummaryHandler.mailBack();",X.back,"acc-mail-back"));Y.push(ACCUtils.createRedButton("javascript:ACCDWRSummaryHandler.mailNext();",X.next,"acc-mail-next"));return Y};var N=function(){var Z=$("#acc-mail-back");var X=$("#acc-mail-next a");var a=$("#acc-mail-mail-container");var Y=$("#acc-mail-pdf-container");if(R==G){Z.hide();if(ACCUtils.toBoolean(ACCUtils.getRadioButtonState($("#acc-mail-options"),"mailPdf"))){X[0].innerHTML=C}else{X[0].innerHTML=E}a.show();Y.hide()}else{Z.show();X[0].innerHTML=E;a.hide();Y.show()}};var F=function(f){var e=$("#acc-summary-left-abstract-link");var d=$("#acc-summary-left-technicals-link");var Z=$("#acc-summary-left-standards-link");var Y=e.find("a");var c=d.find("a");var g=Z.find("a");var b=$("#acc-summary-left-content-abstract");var a=$("#acc-summary-left-content-technicals");var X=$("#acc-summary-left-content-standards");b.hide();a.hide();X.hide();e.removeClass("acc-grey-tab-selected");d.removeClass("acc-grey-tab-selected");Z.removeClass("acc-grey-tab-selected");e.removeClass("acc-grey-tab-hover");d.removeClass("acc-grey-tab-hover");Z.removeClass("acc-grey-tab-hover");Y.removeAttr("href");c.removeAttr("href");g.removeAttr("href");if(f=="standards"){ACCDWRTrackingHandler.trackPage(ACCDWRTrackingHandler.getYourAudiStandardPageName());X.show();Z.addClass("acc-grey-tab-selected");Y.attr("href","javascript:ACCDWRSummaryHandler.goTo('abstract');");c.attr("href","javascript:ACCDWRSummaryHandler.goTo('technicals');");$("#acc-summary-left-content-standards-content .acc-scroll-container").jScrollPane()}else{if(f=="technicals"){ACCDWRTrackingHandler.trackPage(ACCDWRTrackingHandler.getYourAudiTechnicalPageName());a.show();d.addClass("acc-grey-tab-selected");Y.attr("href","javascript:ACCDWRSummaryHandler.goTo('abstract');");g.attr("href","javascript:ACCDWRSummaryHandler.goTo('standards');");$("#acc-summary-left-content-technicals-content .acc-scroll-container").jScrollPane()}else{ACCDWRTrackingHandler.trackPage(ACCDWRTrackingHandler.getYourAudiPageName());b.show();e.addClass("acc-grey-tab-selected");c.attr("href","javascript:ACCDWRSummaryHandler.goTo('technicals');");g.attr("href","javascript:ACCDWRSummaryHandler.goTo('standards');");$("#acc-summary-left-content-abstract-content .acc-scroll-container").jScrollPane()}}};var W=function(Z,Y,X){return{id:Z,className:"acc-grey-tab "+(!X?"acc-grey-tab-selected":""),childNodes:[{className:"acc-grey-tab-left",childNodes:[{className:"acc-grey-tab-left-spacer",innerHTML:"&nbsp;"},{tagName:"a",href:X,innerHTML:Y}]},{className:"acc-grey-tab-right",innerHTML:"&nbsp;"}]}};var M=function(Z){var Y=[];Y.push({id:"acc-summary-left-content-abstract-headline",innerHTML:Z.leftHeadline});var X="";if(ACCUtils.isPriceOneEnabled()&&Z.showPrices){X="acc-summary-left-content-abstract-content-small";Y.push({id:"acc-summary-left-content-abstract-total",childNodes:[{id:"acc-summary-left-content-abstract-total-label",innerHTML:Z.totalPriceLabel},{id:"acc-summary-left-content-abstract-total-value",innerHTML:Z.totalPriceValue},{className:"acc-clear",innerHTML:"&nbsp;"}]})}Y.push({id:"acc-summary-left-content-abstract-content",className:X,childNodes:[{className:"acc-scroll-container",childNodes:ACCUtils.parseSummaryBean(Z.abstractBean,Z.showPrices)}]});return{id:"acc-summary-left-content-abstract",childNodes:Y}};var Q=function(X){return{id:"acc-summary-left-content-technicals",style:"display: none;",childNodes:[{id:"acc-summary-left-content-technicals-headline",innerHTML:X.leftHeadline},{id:"acc-summary-left-content-technicals-content",childNodes:[{className:"acc-scroll-container",childNodes:ACCUtils.parseHierarchy(X.technicals,false)}]}]}};var B=function(X){return{id:"acc-summary-left-content-standards",style:"display: none;",childNodes:[{id:"acc-summary-left-content-standards-headline",innerHTML:X.leftHeadline},{id:"acc-summary-left-content-standards-content",childNodes:[{className:"acc-scroll-container",childNodes:ACCUtils.parseHierarchy(X.standards,true)}]}]}};var K=function(Z){var X=[];X.push(M(Z));if(Z.hasTechnicals){X.push(Q(Z))}if(Z.hasStandards){X.push(B(Z))}var Y=[];Y.push(W("acc-summary-left-abstract-link",Z.summaryText));if(Z.hasTechnicals){Y.push({className:"acc-grey-tab-separator",innerHTML:"&nbsp;"});Y.push(W("acc-summary-left-technicals-link",Z.technicalText,"javascript:ACCDWRSummaryHandler.goTo('technicals');"))}if(Z.hasStandards){Y.push({className:"acc-grey-tab-separator",innerHTML:"&nbsp;"});Y.push(W("acc-summary-left-standards-link",Z.standardsText,"javascript:ACCDWRSummaryHandler.goTo('standards');"))}Y.push({id:"acc-summary-left-content",childNodes:[{id:"acc-summary-left-content-top-left",innerHTML:"&nbsp;"},{id:"acc-summary-left-content-top-right",innerHTML:"&nbsp;"},{id:"acc-summary-left-content-wrapper",childNodes:X},{id:"acc-summary-left-content-bottom-left",innerHTML:"&nbsp;"},{id:"acc-summary-left-content-bottom-center",innerHTML:"&nbsp;"},{id:"acc-summary-left-content-bottom-right",innerHTML:"&nbsp;"}]});return Y};var A=function(Y){var X=[];if(Y.dealerEnabled){X.push({id:"acc-summary-right-dealer-headline",innerHTML:Y.dealerHeadline});if(!ACCUtils.isEmpty(Y.dealerDescription)){X.push({id:"acc-summary-right-dealer-description",innerHTML:Y.dealerDescription})}if(!ACCUtils.isEmpty(Y.testdriveText)&&!ACCUtils.isEmpty(Y.testdriveURL)){X.push({tagName:"a",id:"acc-summary-right-testdrive-link",href:Y.testdriveURL,innerHTML:Y.testdriveText})}X.push(ACCUtils.createRedButton(Y.dealerURL,Y.dealerText,null,"layerModal"));X.push({className:"acc-clear",innerHTML:"&nbsp;"});if(!ACCUtils.isEmpty(Y.dealerLocationURL)&&!ACCUtils.isEmpty(Y.dealerLocationLinkName)){X.push({id:"acc-summary-right-dealer-location-headline",innerHTML:Y.dealerLocationHeadline});X.push({id:"acc-summary-right-dealer-location-description",innerHTML:Y.dealerLocationDescription});X.push({id:"acc-summary-right-image",childNodes:[{tagName:"a",href:Y.dealerLocationURL,rel:"layerModal",childNodes:[{tagName:"img",src:"images/aoa/summary.jpg",alt:""}]}]});X.push({tagName:"a",id:"acc-summary-right-dealer-location-link",href:Y.dealerLocationURL,rel:"layerModal",innerHTML:Y.dealerLocationLinkName})}}if(Y.mailEnabled||Y.pdfEnabled){X.push({id:"acc-summary-right-print-description",innerHTML:Y.printDescription});if(Y.pdfEnabled){X.push({tagName:"a",id:"acc-summary-right-pdf",href:"javascript:ACCDWRSummaryHandler.openPDFDialog();",innerHTML:Y.pdfText})}if(Y.mailEnabled){X.push({tagName:"a",id:"acc-summary-right-mail",href:"javascript:ACCDWRSummaryHandler.openMailDialog();",innerHTML:Y.mailText})}}return X};ACCDWRHandler.registerUpdateFunction("summaryUpdateBean",function(Z){$("#acc-summary").remove();$("#acc-content").appendDom([{id:"acc-summary",childNodes:[{id:"acc-summary-left",childNodes:K(Z)},{id:"acc-summary-right",childNodes:$.merge([{id:"acc-summary-right-headline",innerHTML:Z.rightHeadline}],A(Z))},{className:"acc-clear",innerHTML:"&nbsp;"}]},{className:"acc-clear",innerHTML:"&nbsp;"}]);ACCUtils.activateButtonHover($("#acc-summary .acc-red-button"),null,$("#acc-summary  .acc-grey-tab"));if(ACCUtils.isTracking()){$("#acc-summary-right-dealer-location-link").click(function(){ACCDWRTrackingHandler.actionStarted("dealersearch",ACCDWRTrackingHandler.getDealerSearchPageName());ACCDWRTrackingHandler.actionEnded("dealersearch",ACCDWRTrackingHandler.getDealerSearchPageName())});$("#acc-summary-right .acc-red-button").click(function(){ACCDWRTrackingHandler.actionStarted("dealer_request",ACCDWRTrackingHandler.getDealerPageName());ACCDWRTrackingHandler.actionEnded("dealer_request",ACCDWRTrackingHandler.getDealerPageName())});$("#acc-dart-tagging").remove();var Y=Math.random()+"";var X=Y*10000000000000;$("body").append($('<iframe id="acc-dart-tagging" src="http://fls.doubleclick.net/activityi;src=1311136;type=audi2010;cat=comfig;ord=1;num='+X.toString()+'?" width="0" height="0" frameborder="0"></iframe>'))}$("#acc-summary-left-content-abstract-content .acc-scroll-container").jScrollPane()});ACCDWRHandler.registerUpdateFunction("pdfDialogUpdateBean",function(X){ACCDWRTrackingHandler.actionStarted("pdf",ACCDWRTrackingHandler.getPdfPageName());if(X.userSelectable){ACCUtils.openDialog({id:"pdf",headline:X.pdfHeadline,closeActionName:"closePDFDialog",closeText:X.close,width:620,content:[{tagName:"form",name:"acc-pdf-form",method:"post",target:"_blank",action:X.actionURL,childNodes:O(X.pdfInputBean,X.ok,true)}]});$("#acc-pdf input:checkbox").checkbox({cls:"acc-styled-checkbox"});$("#acc-pdf input:radio").checkbox({cls:"acc-styled-radio"});ACCUtils.activateButtonHover($("#acc-pdf .acc-red-button"),null,null)}else{ACCDWRTrackingHandler.actionEnded("pdf",ACCDWRTrackingHandler.getPdfPageName());$("#acc-container").appendDom([{id:"acc-pdf-hidden",style:"display: none;",childNodes:[{tagName:"form",name:"acc-pdf-form",method:"post",target:"_blank",action:X.actionURL,childNodes:O(X.pdfInputBean,X.ok,true)}]}]);$("#acc-pdf-hidden form").submit();$("#acc-pdf-hidden").remove()}});ACCDWRHandler.registerUpdateFunction("mailDialogUpdateBean",function(X){if(X.success){ACCUtils.closeDialog("mail");ACCUtils.openDialog({id:"mail-success",headline:X.headline,closeText:X.close,closeActionName:"closeMailSuccessDialog",height:107,width:310,content:[{innerHTML:X.message}]});ACCDWRTrackingHandler.actionEnded("mail",ACCDWRTrackingHandler.getMailPageName())}else{ACCDWRSummaryHandler.mailBack();for(var Z=0;Z<X.validNames.length;Z++){$("#acc-mail input[name="+X.validNames[Z]+"]").addClass("acc-invalid-input");$("#acc-mail textarea[name="+X.validNames[Z]+"]").addClass("acc-invalid-input")}for(var Y=0;Y<X.invalidNames.length;Y++){$("#acc-mail input[name="+X.invalidNames[Y]+"]").addClass("acc-invalid-input");$("#acc-mail textarea[name="+X.invalidNames[Y]+"]").addClass("acc-invalid-input")}}});ACCDWRHandler.registerUpdateFunction("mailDialogInitUpdateBean",function(X){ACCDWRTrackingHandler.actionStarted("mail",ACCDWRTrackingHandler.getMailPageName());ACCUtils.openDialog({id:"mail",headline:X.headline,closeActionName:"closeMailDialog",closeText:X.close,content:S(X),width:620,height:400});$("#acc-mail input:checkbox").checkbox({cls:"acc-styled-checkbox"});$("#acc-mail input:radio").checkbox({cls:"acc-styled-radio"});R=G;C=X.next;E=X.ok;U=X.pdfEnabled;P=X.pdfUserSelectEnabled;N();var Y=$("#acc-mail input[name=mailPdf]").parent();Y.find(".acc-styled-radio").click(N);Y.find("label").click(N);ACCUtils.activateButtonHover($("#acc-mail .acc-red-button"),null,null)});ACCDWRHandler.registerUpdateFunction("wegaSubmitBean",function(X){ACCDWRTrackingHandler.actionStarted("dealer_request",ACCDWRTrackingHandler.getDealerPageName());ACCDWRTrackingHandler.actionEnded("dealer_request",ACCDWRTrackingHandler.getDealerPageName());window.location=X.redirectURL});return{goTo:function(X){F(X)},openPDFDialog:function(){ACCDWRHandler.executeDWRService(accDWRSummaryService.openPDFDialog)},closePDFDialog:function(){ACCUtils.closeDialog("pdf")},createPDF:function(){ACCDWRTrackingHandler.actionEnded("pdf",ACCDWRTrackingHandler.getPdfPageName());$("#acc-pdf form").submit();ACCUtils.closeDialog("pdf")},openMailDialog:function(){ACCDWRHandler.executeDWRService(accDWRSummaryService.openMailDialog)},closeMailDialog:function(){ACCUtils.closeDialog("mail")},mailBack:function(){R=G;N()},mailNext:function(){if(R==G&&U&&P&&ACCUtils.toBoolean(ACCUtils.getRadioButtonState($("#acc-mail-options"),"mailPdf"))){R=V;N()}else{var e=$("#acc-mail");var k=ACCUtils.getTextInputValue(e,"mailFrom");var Z=ACCUtils.getTextInputValue(e,"mailTo");var d=ACCUtils.getTextInputValue(e,"mailSubject");var f=ACCUtils.getTextareaValue(e,"mailMessage");var j=ACCUtils.toBoolean(ACCUtils.getRadioButtonState(e,"mailCopy"));var l=ACCUtils.toBoolean(ACCUtils.getRadioButtonState(e,"mailPdf"));var h=ACCUtils.getCheckboxState(e,"printSpecialMail");var r=ACCUtils.getCheckboxState(e,"specialDetailsMail");var q=ACCUtils.getCheckboxState(e,"specialPicsMail");var n=ACCUtils.getCheckboxState(e,"printDefaultMail");var i=ACCUtils.getCheckboxState(e,"standardDetailsMail");var Y=ACCUtils.getCheckboxState(e,"standardPicsMail");var o=ACCUtils.getCheckboxState(e,"printTechMail");var p=ACCUtils.getCheckboxState(e,"smallExteriorMail");var c=ACCUtils.getCheckboxState(e,"bigExteriorMail");var a=ACCUtils.getCheckboxState(e,"smallInteriorMail");var m=ACCUtils.getCheckboxState(e,"bigInteriorMail");var X=window.location.href;var g=ACCUtils.getRadioButtonState(e,"1OptionsMail");var b="NONE";ACCDWRHandler.executeDWRService(accDWRSummaryService.sendEmail,k,Z,d,f,j,l,g,b,h,r,q,n,i,Y,o,a,m,p,c,X)}},closeMailSuccessDialog:function(){ACCUtils.closeDialog("mail-success")},requestAQuote:function(){ACCDWRHandler.executeDWRService(accDWRSummaryService.requestAQuote)}}}();ACCUtils.registerFunction("closePDFDialog",ACCDWRSummaryHandler.closePDFDialog);ACCUtils.registerFunction("closeMailDialog",ACCDWRSummaryHandler.closeMailDialog);ACCUtils.registerFunction("closeMailSuccessDialog",ACCDWRSummaryHandler.closeMailSuccessDialog);var ACCDWRTrackingHandler=function(){var A=null;var G=null;var D=null;var I=null;var M=null;var F=null;var R=null;var H=null;var Q=null;var E=null;var O=null;var K=function(S){S.events="";S.event7="";S.event8="";S.event9="";S.event10="";S.event40="";S.prop14="";S.prop15="";S.prop16="";S.prop17="";S.prop18="";S.prop19="";S.prop20="";S.prop21="";S.prop22="";S.prop23="";S.prop24="";S.prop25="";S.prop26="";S.prop27="";S.prop28="";S.eVar16="";S.eVar17="";S.eVar18="";S.eVar19="";S.eVar20="";S.eVar21="";S.eVar22="";S.eVar23="";S.eVar24="";S.eVar25="";S.eVar26="";S.eVar27="";S.products=""};var L=function(){return ACCUtils.isTracking()&&s_account&&$.isFunction(s_gi)};var C=function(){if(L()){var S=s_gi(s_account);K(S);if(!ACCUtils.isEmpty(H)){S.pageName=H}S.prop1="audi_car_configurator";S.eVar18=H;S.prop28="false";S.t()}};var B=function(T,U){if(L()){var S=s_gi(s_account);K(S);if(!ACCUtils.isEmpty(H)){S.pageName=H}S.prop1="audi_car_configurator";S.prop8="true";if(!ACCUtils.isEmpty(T)&&!ACCUtils.isEmpty(U)){S.eVar27="true_["+T+"_"+U+"]"}S.t()}};var J=function(S){if(L()){var T=s_gi(s_account);K(T);if(!ACCUtils.isEmpty(S)){T.pageName=S}T.prop1="audi_car_configurator";T.t()}};var P=function(T,S){if(L()){var U=s_gi(s_account);K(U);if(!ACCUtils.isEmpty(S)){U.pageName=S}U.prop1="audi_car_configurator";U.prop23=T;U.t()}};var N=function(T,S){if(L()){var U=s_gi(s_account);K(U);if(!ACCUtils.isEmpty(S)){U.pageName=S}if(T=="dealer_request"){U.events="event40"}U.prop1="audi_car_configurator";U.prop27=T;U.t()}};ACCDWRHandler.registerUpdateFunction("trackingUpdateBean",function(S){if(L()){var T=s_gi(s_account);K(T);T.pageName=S.pageName;ACCDWRTrackingHandler.setCurrentName(S.pageName);T.events=S.events;T.products=S.products;$.each(S.props,function(){T["prop"+this.id]=this.value});$.each(S.evars,function(){T["eVar"+this.id]=this.value});T.t()}});return{startConflict:C,solvedConflict:B,trackPage:J,actionStarted:P,actionEnded:N,setDealerPageName:function(S){A=S},getDealerPageName:function(){return A},setPdfPageName:function(S){G=S},getPdfPageName:function(){return G},setMailPageName:function(S){D=S},getMailPageName:function(){return D},setYourAudiPageName:function(S){I=S},getYourAudiPageName:function(){return I},setYourAudiTechnicalPageName:function(S){M=S},getYourAudiTechnicalPageName:function(){return M},setYourAudiStandardPageName:function(S){F=S},getYourAudiStandardPageName:function(){return F},setEngineComparePageName:function(S){R=S},getEngineComparePageName:function(){return R},setConflictPageName:function(S){H=S},getConflictPageName:function(){return H},setBookmarkPageName:function(S){Q=S},getBookmarkPageName:function(){return Q},setDealerSearchPageName:function(S){E=S},getDealerSearchPageName:function(){return E},setCurrentName:function(S){O=S},getCurrentPageName:function(){return O}}}();
