/*
 * 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;
    }
  }
};

(function(){if(window.jQuery){var _jQuery=window.jQuery}var jQuery=window.jQuery=function(selector,context){return new jQuery.prototype.init(selector,context)};if(window.$){var _$=window.$}window.$=jQuery;var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/;var isSimple=/^.[^:#\[\.]*$/;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this}else{if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1]){selector=jQuery.clean([match[1]],context)}else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3]){return jQuery().find(selector)}else{this[0]=elem;this.length=1;return this}}else{selector=[]}}}else{return new jQuery(context).find(selector)}}else{if(jQuery.isFunction(selector)){return new jQuery(document)[jQuery.fn.ready?"ready":"load"](selector)}}}return this.setArray(selector.constructor==Array&&selector||(selector.jquery||selector.length&&selector!=window&&!selector.nodeType&&selector[0]!=undefined&&selector[0].nodeType)&&jQuery.makeArray(selector)||[selector])},jquery:"1.2.3",size:function(){return this.length},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num]},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this},each:function(callback,args){return jQuery.each(this,callback,args)},index:function(elem){var ret=-1;this.each(function(i){if(this==elem){ret=i}});return ret},attr:function(name,value,type){var options=name;if(name.constructor==String){if(value==undefined){return this.length&&jQuery[type||"attr"](this[0],name)||undefined}else{options={};options[name]=value}}return this.each(function(i){for(name in options){jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name))}})},css:function(key,value){if((key=="width"||key=="height")&&parseFloat(value)<0){value=undefined}return this.attr(key,value,"curCSS")},text:function(text){if(typeof text!="object"&&text!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text))}var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8){ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this])}})});return ret},wrapAll:function(html){if(this[0]){jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild){elem=elem.firstChild}return elem}).append(this)}return this},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html)})},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html)})},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1){this.appendChild(elem)}})},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1){this.insertBefore(elem,this.firstChild)}})},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this)})},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling)})},end:function(){return this.prevObject||jQuery([])},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem)});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems)},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0]}else{return this.cloneNode(true)}});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined){this[expando]=null}});if(events===true){this.find("*").andSelf().each(function(i){if(this.nodeType==3){return }var events=jQuery.data(this,"events");for(var type in events){for(var handler in events[type]){jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data)}}})}return ret},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i)})||jQuery.multiFilter(selector,this))},not:function(selector){if(selector.constructor==String){if(isSimple.test(selector)){return this.pushStack(jQuery.multiFilter(selector,this,true))}else{selector=jQuery.multiFilter(selector,this)}}var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector})},add:function(selector){return !selector?this:this.pushStack(jQuery.merge(this.get(),selector.constructor==String?jQuery(selector).get():selector.length!=undefined&&(!selector.nodeName||jQuery.nodeName(selector,"form"))?selector:[selector]))},is:function(selector){return selector?jQuery.multiFilter(selector,this).length>0:false},hasClass:function(selector){return this.is("."+selector)},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0){return null}for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one){return value}values.push(value)}}return values}else{return(this[0].value||"").replace(/\r/g,"")}}return undefined}return this.each(function(){if(this.nodeType!=1){return }if(value.constructor==Array&&/radio|checkbox/.test(this.type)){this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0)}else{if(jQuery.nodeName(this,"select")){var values=value.constructor==Array?value:[value];jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0)});if(!values.length){this.selectedIndex=-1}}else{this.value=value}}})},html:function(value){return value==undefined?(this.length?this[0].innerHTML:null):this.empty().append(value)},replaceWith:function(value){return this.after(value).remove()},eq:function(i){return this.slice(i,i+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments))},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},andSelf:function(){return this.add(this.prevObject)},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value==null){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data==undefined&&this.length){data=jQuery.data(this[0],key)}return data==null&&parts[1]?this.data(parts[0]):data}else{return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value)})}},removeData:function(key){return this.each(function(){jQuery.removeData(this,key)})},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse){elems.reverse()}}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr")){obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"))}var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script")){scripts=scripts.add(elem)}else{if(elem.nodeType==1){scripts=scripts.add(jQuery("script",elem).remove())}callback.call(obj,elem)}});scripts.each(evalScript)})}};jQuery.prototype.init.prototype=jQuery.prototype;function evalScript(i,elem){if(elem.src){jQuery.ajax({url:elem.src,async:false,dataType:"script"})}else{jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"")}if(elem.parentNode){elem.parentNode.removeChild(elem)}}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2}if(typeof target!="object"&&typeof target!="function"){target={}}if(length==1){target=this;i=0}for(;i<length;i++){if((options=arguments[i])!=null){for(var name in options){if(target===options[name]){continue}if(deep&&options[name]&&typeof options[name]=="object"&&target[name]&&!options[name].nodeType){target[name]=jQuery.extend(target[name],options[name])}else{if(options[name]!=undefined){target[name]=options[name]}}}}}return target};var expando="jQuery"+(new Date()).getTime(),uuid=0,windowData={};var exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i;jQuery.extend({noConflict:function(deep){window.$=_$;if(deep){window.jQuery=_jQuery}return jQuery},isFunction:function(fn){return !!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/function/i.test(fn+"")},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie){script.text=data}else{script.appendChild(document.createTextNode(data))}head.appendChild(script);head.removeChild(script)}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase()},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id){id=elem[expando]=++uuid}if(name&&!jQuery.cache[id]){jQuery.cache[id]={}}if(data!=undefined){jQuery.cache[id][name]=data}return name?jQuery.cache[id][name]:id},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id]){break}if(!name){jQuery.removeData(elem)}}}else{try{delete elem[expando]}catch(e){if(elem.removeAttribute){elem.removeAttribute(expando)}}delete jQuery.cache[id]}},each:function(object,callback,args){if(args){if(object.length==undefined){for(var name in object){if(callback.apply(object[name],args)===false){break}}}else{for(var i=0,length=object.length;i<length;i++){if(callback.apply(object[i],args)===false){break}}}}else{if(object.length==undefined){for(var name in object){if(callback.call(object[name],name,object[name])===false){break}}}else{for(var i=0,length=object.length,value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}}return object},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value)){value=value.call(elem,i)}return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className)){elem.className+=(elem.className?" ":"")+className}})},remove:function(elem,classNames){if(elem.nodeType==1){elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return !jQuery.className.has(classNames,className)}).join(" "):""}},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name]}callback.call(elem);for(var name in options){elem.style[name]=old[name]}},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0});val-=Math.round(padding+border)}if(jQuery(elem).is(":visible")){getWH()}else{jQuery.swap(elem,props,getWH)}return Math.max(0,val)}return jQuery.curCSS(elem,name,force)},curCSS:function(elem,name,force){var ret;function color(elem){if(!jQuery.browser.safari){return false}var ret=document.defaultView.getComputedStyle(elem,null);return !ret||ret.getPropertyValue("color")==""}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(elem.style,"opacity");return ret==""?"1":ret}if(jQuery.browser.opera&&name=="display"){var save=elem.style.outline;elem.style.outline="0 solid black";elem.style.outline=save}if(name.match(/float/i)){name=styleFloat}if(!force&&elem.style&&elem.style[name]){ret=elem.style[name]}else{if(document.defaultView&&document.defaultView.getComputedStyle){if(name.match(/float/i)){name="float"}name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var getComputedStyle=document.defaultView.getComputedStyle(elem,null);if(getComputedStyle&&!color(elem)){ret=getComputedStyle.getPropertyValue(name)}else{var swap=[],stack=[];for(var a=elem;a&&color(a);a=a.parentNode){stack.unshift(a)}for(var i=0;i<stack.length;i++){if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block"}}ret=name=="display"&&swap[stack.length-1]!=null?"none":(getComputedStyle&&getComputedStyle.getPropertyValue(name))||"";for(var i=0;i<swap.length;i++){if(swap[i]!=null){stack[i].style.display=swap[i]}}}if(name=="opacity"&&ret==""){ret="1"}}else{if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase()});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var style=elem.style.left,runtimeStyle=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;elem.style.left=ret||0;ret=elem.style.pixelLeft+"px";elem.style.left=style;elem.runtimeStyle.left=runtimeStyle}}}}return ret},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=="undefined"){context=context.ownerDocument||context[0]&&context[0].ownerDocument||document}jQuery.each(elems,function(i,elem){if(!elem){return }if(elem.constructor==Number){elem=elem.toString()}if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">"});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--){div=div.lastChild}if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j){if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length){tbody[j].parentNode.removeChild(tbody[j])}}if(/^\s/.test(elem)){div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild)}}elem=jQuery.makeArray(div.childNodes)}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select"))){return }if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options){ret.push(elem)}else{ret=jQuery.merge(ret,elem)}});return ret},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8){return undefined}var fix=jQuery.isXMLDoc(elem)?{}:jQuery.props;if(name=="selected"&&jQuery.browser.safari){elem.parentNode.selectedIndex}if(fix[name]){if(value!=undefined){elem[fix[name]]=value}return elem[fix[name]]}else{if(jQuery.browser.msie&&name=="style"){return jQuery.attr(elem.style,"cssText",value)}else{if(value==undefined&&jQuery.browser.msie&&jQuery.nodeName(elem,"form")&&(name=="action"||name=="method")){return elem.getAttributeNode(name).nodeValue}else{if(elem.tagName){if(value!=undefined){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode){throw"type property can't be changed"}elem.setAttribute(name,""+value)}if(jQuery.browser.msie&&/href|src/.test(name)&&!jQuery.isXMLDoc(elem)){return elem.getAttribute(name,2)}return elem.getAttribute(name)}else{if(name=="opacity"&&jQuery.browser.msie){if(value!=undefined){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseFloat(value).toString()=="NaN"?"":"alpha(opacity="+value*100+")")}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100).toString():""}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase()});if(value!=undefined){elem[name]=value}return elem[name]}}}}},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"")},makeArray:function(array){var ret=[];if(typeof array!="array"){for(var i=0,length=array.length;i<length;i++){ret.push(array[i])}}else{ret=array.slice(0)}return ret},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++){if(array[i]==elem){return i}}return -1},merge:function(first,second){if(jQuery.browser.msie){for(var i=0;second[i];i++){if(second[i].nodeType!=8){first.push(second[i])}}}else{for(var i=0;second[i];i++){first.push(second[i])}}return first},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i])}}}catch(e){ret=array}return ret},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++){if(!inv&&callback(elems[i],i)||inv&&!callback(elems[i],i)){ret.push(elems[i])}}return ret},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!==null&&value!=undefined){if(value.constructor!=Array){value=[value]}ret=ret.concat(value)}}return ret}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,innerHTML:"innerHTML",className:"className",value:"value",disabled:"disabled",checked:"checked",readonly:"readOnly",selected:"selected",maxlength:"maxLength",selectedIndex:"selectedIndex",defaultValue:"defaultValue",tagName:"tagName",nodeName:"nodeName"}});jQuery.each({parent:function(elem){return elem.parentNode},parents:function(elem){return jQuery.dir(elem,"parentNode")},next:function(elem){return jQuery.nth(elem,2,"nextSibling")},prev:function(elem){return jQuery.nth(elem,2,"previousSibling")},nextAll:function(elem){return jQuery.dir(elem,"nextSibling")},prevAll:function(elem){return jQuery.dir(elem,"previousSibling")},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem)},children:function(elem){return jQuery.sibling(elem.firstChild)},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes)}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string"){ret=jQuery.multiFilter(selector,ret)}return this.pushStack(jQuery.unique(ret))}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++){jQuery(args[i])[original](this)}})}});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1){this.removeAttribute(name)}},addClass:function(classNames){jQuery.className.add(this,classNames)},removeClass:function(classNames){jQuery.className.remove(this,classNames)},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames)},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){jQuery(">*",this).remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments)}});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px")}});var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2])},"#":function(a,i,m){return a.getAttribute("id")==m[2]},":":{lt:function(a,i,m){return i<m[3]-0},gt:function(a,i,m){return i>m[3]-0},nth:function(a,i,m){return m[3]-0==i},eq:function(a,i,m){return m[3]-0==i},first:function(a,i){return i==0},last:function(a,i,m,r){return i==r.length-1},even:function(a,i){return i%2==0},odd:function(a,i){return i%2},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a},"only-child":function(a){return !jQuery.nth(a.parentNode.lastChild,2,"previousSibling")},parent:function(a){return a.firstChild},empty:function(a){return !a.firstChild},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden"},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden"},enabled:function(a){return !a.disabled},disabled:function(a){return a.disabled},checked:function(a){return a.checked},selected:function(a){return a.selected||jQuery.attr(a,"selected")},text:function(a){return"text"==a.type},radio:function(a){return"radio"==a.type},checkbox:function(a){return"checkbox"==a.type},file:function(a){return"file"==a.type},password:function(a){return"password"==a.type},submit:function(a){return"submit"==a.type},image:function(a){return"image"==a.type},reset:function(a){return"reset"==a.type},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button")},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},has:function(a,i,m){return jQuery.find(m[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem}).length}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r)}return cur},find:function(t,context){if(typeof t!="string"){return[t]}if(context&&context.nodeType!=1&&context.nodeType!=9){return[]}context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false;var re=quickChild;var m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++){for(var c=ret[i].firstChild;c;c=c.nextSibling){if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName)){r.push(c)}}}ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0){continue}foundToken=true}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling){if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id]){break}if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~"){merge[id]=true}r.push(n)}if(m=="+"){break}}}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0]){ret.shift()}done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length)}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]]}else{re2=quickClass;m=re2.exec(t)}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2]){oid=jQuery('[@id="'+m[2]+'"]',elem)[0]}ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[]}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object"){tag="param"}r=jQuery.merge(r,ret[i].getElementsByTagName(tag))}if(m[1]=="."){r=jQuery.classFilter(r,m[2])}if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++){if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break}}r=tmp}ret=r}t=t.replace(re2,"")}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t)}}if(t){ret=[]}if(ret&&context==ret[0]){ret.shift()}done=jQuery.merge(done,ret);return done},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass){tmp.push(r[i])}}return tmp},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break}}if(!m){break}if(m[1]==":"&&m[2]=="not"){r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3])}else{if(m[1]=="."){r=jQuery.classFilter(r,m[2],not)}else{if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2])){z=jQuery.attr(a,m[2])||""}if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not){tmp.push(a)}}r=tmp}else{if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling){if(n.nodeType==1){n.nodeIndex=c++}}merge[id]=true}var add=false;if(first==0){if(node.nodeIndex==last){add=true}}else{if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0){add=true}}if(add^not){tmp.push(node)}}r=tmp}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object"){fn=fn[m[2]]}if(typeof fn=="string"){fn=eval("false||function(a,i){return "+fn+";}")}r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r)},not)}}}}}return{r:r,t:t}},dir:function(elem,dir){var matched=[];var cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1){matched.push(cur)}cur=cur[dir]}return matched},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir]){if(cur.nodeType==1&&++num==result){break}}return cur},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&(!elem||n!=elem)){r.push(n)}}return r}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8){return }if(jQuery.browser.msie&&elem.setInterval!=undefined){elem=window}if(!handler.guid){handler.guid=this.guid++}if(data!=undefined){var fn=handler;handler=function(){return fn.apply(this,arguments)};handler.data=data;handler.guid=fn.guid}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){var val;if(typeof jQuery=="undefined"||jQuery.event.triggered){return val}val=jQuery.event.handle.apply(arguments.callee.elem,arguments);return val});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener){elem.addEventListener(type,handle,false)}else{if(elem.attachEvent){elem.attachEvent("on"+type,handle)}}}}handlers[handler.guid]=handler;jQuery.event.global[type]=true});elem=null},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8){return }var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)==".")){for(var type in events){this.remove(elem,type+(types||""))}}else{if(types.type){handler=types.handler;types=types.type}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler){delete events[type][handler.guid]}else{for(handler in events[type]){if(!parts[1]||events[type][handler].type==parts[1]){delete events[type][handler]}}}for(ret in events[type]){break}if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener){elem.removeEventListener(type,jQuery.data(elem,"handle"),false)}else{if(elem.detachEvent){elem.detachEvent("on"+type,jQuery.data(elem,"handle"))}}}ret=null;delete events[type]}}})}for(ret in events){break}if(!ret){var handle=jQuery.data(elem,"handle");if(handle){handle.elem=null}jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle")}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data||[]);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true}if(!elem){if(this.global[type]){jQuery("*").add([window,document]).trigger(type,data)}}else{if(elem.nodeType==3||elem.nodeType==8){return undefined}var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift(this.fix({type:type,target:elem}))}data[0].type=type;if(exclusive){data[0].exclusive=true}if(jQuery.isFunction(jQuery.data(elem,"handle"))){val=jQuery.data(elem,"handle").apply(elem,data)}if(!fn&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false){val=false}if(event){data.shift()}if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined){val=ret}}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,"a")&&type=="click")){this.triggered=true;try{elem[type]()}catch(e){}}this.triggered=false}return val},handle:function(event){var val;event=jQuery.event.fix(event||window.event||{});var parts=event.type.split(".");event.type=parts[0];var handlers=jQuery.data(this,"events")&&jQuery.data(this,"events")[event.type],args=Array.prototype.slice.call(arguments,1);args.unshift(event);for(var j in handlers){var handler=handlers[j];args[0].handler=handler;args[0].data=handler.data;if(!parts[1]&&!event.exclusive||handler.type==parts[1]){var ret=handler.apply(this,args);if(val!==false){val=ret}if(ret===false){event.preventDefault();event.stopPropagation()}}}if(jQuery.browser.msie){event.target=event.preventDefault=event.stopPropagation=event.handler=event.data=null}return val},fix:function(event){var originalEvent=event;event=jQuery.extend({},originalEvent);event.preventDefault=function(){if(originalEvent.preventDefault){originalEvent.preventDefault()}originalEvent.returnValue=false};event.stopPropagation=function(){if(originalEvent.stopPropagation){originalEvent.stopPropagation()}originalEvent.cancelBubble=true};if(!event.target){event.target=event.srcElement||document}if(event.target.nodeType==3){event.target=originalEvent.target.parentNode}if(!event.relatedTarget&&event.fromElement){event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement}if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0)}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode)){event.which=event.charCode||event.keyCode}if(!event.metaKey&&event.ctrlKey){event.metaKey=event.ctrlKey}if(!event.which&&event.button){event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)))}return event},special:{ready:{setup:function(){bindReady();return },teardown:function(){return }},mouseenter:{setup:function(){if(jQuery.browser.msie){return false}jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true},teardown:function(){if(jQuery.browser.msie){return false}jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true},handler:function(event){if(withinElement(event,this)){return true}arguments[0].type="mouseenter";return jQuery.event.handle.apply(this,arguments)}},mouseleave:{setup:function(){if(jQuery.browser.msie){return false}jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true},teardown:function(){if(jQuery.browser.msie){return false}jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true},handler:function(event){if(withinElement(event,this)){return true}arguments[0].type="mouseleave";return jQuery.event.handle.apply(this,arguments)}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data)})},one:function(type,data,fn){return this.each(function(){jQuery.event.add(this,type,function(event){jQuery(this).unbind(event);return(fn||data).apply(this,arguments)},fn&&data)})},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn)})},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn)})},triggerHandler:function(type,data,fn){if(this[0]){return jQuery.event.trigger(type,data,this[0],false,fn)}return undefined},toggle:function(){var args=arguments;return this.click(function(event){this.lastToggle=0==this.lastToggle?1:0;event.preventDefault();return args[this.lastToggle].apply(this,arguments)||false})},hover:function(fnOver,fnOut){return this.bind("mouseenter",fnOver).bind("mouseleave",fnOut)},ready:function(fn){bindReady();if(jQuery.isReady){fn.call(document,jQuery)}else{jQuery.readyList.push(function(){return fn.call(this,jQuery)})}return this}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.apply(document)});jQuery.readyList=null}jQuery(document).triggerHandler("ready")}}});var readyBound=false;function bindReady(){if(readyBound){return }readyBound=true;if(document.addEventListener&&!jQuery.browser.opera){document.addEventListener("DOMContentLoaded",jQuery.ready,false)}if(jQuery.browser.msie&&window==top){(function(){if(jQuery.isReady){return }try{document.documentElement.doScroll("left")}catch(error){setTimeout(arguments.callee,0);return }jQuery.ready()})()}if(jQuery.browser.opera){document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady){return }for(var i=0;i<document.styleSheets.length;i++){if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return }}jQuery.ready()},false)}if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady){return }if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return }if(numStyles===undefined){numStyles=jQuery("style, link[rel=stylesheet]").length}if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return }jQuery.ready()})()}jQuery.event.add(window,"load",jQuery.ready)}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,change,select,submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name)}});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem){try{parent=parent.parentNode}catch(error){parent=elem}}return parent==elem};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind()});jQuery.fn.extend({load:function(url,params,callback){if(jQuery.isFunction(url)){return this.bind("load",url)}var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off)}callback=callback||function(){};var type="GET";if(params){if(jQuery.isFunction(params)){callback=params;params=null}else{params=jQuery.param(params);type="POST"}}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified"){self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText)}self.each(callback,[res.responseText,status,res])}});return this},serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type))}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val}}):{name:elem.name,value:val}}).get()}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f)}});var jsc=(new Date).getTime();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type})},getScript:function(url,callback){return jQuery.get(url,null,callback,"script")},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={}}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type})},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings)},ajaxSettings:{global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){var jsonp,jsre=/=\?(&|$)/g,status,data;s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));if(s.data&&s.processData&&typeof s.data!="string"){s.data=jQuery.param(s.data)}if(s.dataType=="jsonp"){if(s.type.toLowerCase()=="get"){if(!s.url.match(jsre)){s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?"}}else{if(!s.data||!s.data.match(jsre)){s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?"}}s.dataType="json"}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data){s.data=(s.data+"").replace(jsre,"="+jsonp+"$1")}s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp]}catch(e){}if(head){head.removeChild(script)}}}if(s.dataType=="script"&&s.cache==null){s.cache=false}if(s.cache===false&&s.type.toLowerCase()=="get"){var ts=(new Date()).getTime();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"")}if(s.data&&s.type.toLowerCase()=="get"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null}if(s.global&&!jQuery.active++){jQuery.event.trigger("ajaxStart")}if((!s.url.indexOf("http")||!s.url.indexOf("//"))&&s.dataType=="script"&&s.type.toLowerCase()=="get"){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset){script.charset=s.scriptCharset}if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script)}}}head.appendChild(script);return undefined}var requestDone=false;var xml=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();xml.open(s.type,s.url,s.async,s.username,s.password);try{if(s.data){xml.setRequestHeader("Content-Type",s.contentType)}if(s.ifModified){xml.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}xml.setRequestHeader("X-Requested-With","XMLHttpRequest");xml.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default)}catch(e){}if(s.beforeSend){s.beforeSend(xml)}if(s.global){jQuery.event.trigger("ajaxSend",[xml,s])}var onreadystatechange=function(isTimeout){if(!requestDone&&xml&&(xml.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xml)&&"error"||s.ifModified&&jQuery.httpNotModified(xml,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xml,s.dataType)}catch(e){status="parsererror"}}if(status=="success"){var modRes;try{modRes=xml.getResponseHeader("Last-Modified")}catch(e){}if(s.ifModified&&modRes){jQuery.lastModified[s.url]=modRes}if(!jsonp){success()}}else{jQuery.handleError(s,xml,status)}complete();if(s.async){xml=null}}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0){setTimeout(function(){if(xml){xml.abort();if(!requestDone){onreadystatechange("timeout")}}},s.timeout)}}try{xml.send(s.data)}catch(e){jQuery.handleError(s,xml,null,e)}if(!s.async){onreadystatechange()}function success(){if(s.success){s.success(data,status)}if(s.global){jQuery.event.trigger("ajaxSuccess",[xml,s])}}function complete(){if(s.complete){s.complete(xml,status)}if(s.global){jQuery.event.trigger("ajaxComplete",[xml,s])}if(s.global&&!--jQuery.active){jQuery.event.trigger("ajaxStop")}}return xml},handleError:function(s,xml,status,e){if(s.error){s.error(xml,status,e)}if(s.global){jQuery.event.trigger("ajaxError",[xml,s,e])}},active:0,httpSuccess:function(r){try{return !r.status&&location.protocol=="file:"||(r.status>=200&&r.status<300)||r.status==304||r.status==1223||jQuery.browser.safari&&r.status==undefined}catch(e){}return false},httpNotModified:function(xml,url){try{var xmlRes=xml.getResponseHeader("Last-Modified");return xml.status==304||xmlRes==jQuery.lastModified[url]||jQuery.browser.safari&&xml.status==undefined}catch(e){}return false},httpData:function(r,type){var ct=r.getResponseHeader("content-type");var xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0;var data=xml?r.responseXML:r.responseText;if(xml&&data.documentElement.tagName=="parsererror"){throw"parsererror"}if(type=="script"){jQuery.globalEval(data)}if(type=="json"){data=eval("("+data+")")}return data},param:function(a){var s=[];if(a.constructor==Array||a.jquery){jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value))})}else{for(var j in a){if(a[j]&&a[j].constructor==Array){jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this))})}else{s.push(encodeURIComponent(j)+"="+encodeURIComponent(a[j]))}}}return s.join("&").replace(/%20/g,"+")}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none"){this.style.display="block"}elem.remove()}}).end()},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none"}).end()},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle(fn,fn2):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]()})},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback)},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback)},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback)},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback)},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback)},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback)},animate:function(prop,speed,easing,callback,changeOverflow){var optall=jQuery.speed(speed,easing,callback);changeOverflow=typeof (changeOverflow)=="undefined"?true:changeOverflow;return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1){return false}var opt=jQuery.extend({},optall);var hidden=jQuery(this).is(":hidden"),self=this;for(var p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden){return jQuery.isFunction(opt.complete)&&opt.complete.apply(this)}if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow}}if(changeOverflow&&opt.overflow!=null){this.style.overflow="hidden"}opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val)){e[val=="toggle"?hidden?"show":"hide":val](prop)}else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit}if(parts[1]){end=((parts[1]=="-="?-1:1)*end)+start}e.custom(start,end,unit)}else{e.custom(start,val,"")}}});return true})},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx"}if(!type||(typeof type=="string"&&!fn)){return queue(this[0],type)}return this.each(function(){if(fn.constructor==Array){queue(this,type,fn)}else{queue(this,type).push(fn);if(queue(this,type).length==1){fn.apply(this)}}})},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue){this.queue([])}this.each(function(){for(var i=timers.length-1;i>=0;i--){if(timers[i].elem==this){if(gotoEnd){timers[i](true)}timers.splice(i,1)}}});if(!gotoEnd){this.dequeue()}return this}});var queue=function(elem,type,array){if(!elem){return undefined}type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array){q=jQuery.data(elem,type+"queue",array?jQuery.makeArray(array):[])}return q};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length){q[0].apply(this)}})};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:{slow:600,fast:200}[opt.duration])||400;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false){jQuery(this).dequeue()}if(jQuery.isFunction(opt.old)){opt.old.apply(this)}};return opt},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig){options.orig={}}}});jQuery.fx.prototype={update:function(){if(this.options.step){this.options.step.apply(this.elem,[this.now,this])}(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width"){this.elem.style.display="block"}},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null){return this.elem[this.prop]}var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0},custom:function(from,to,unit){this.startTime=(new Date()).getTime();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd)}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++){if(!timers[i]()){timers.splice(i--,1)}}if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null}},13)}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height"){this.elem.style[this.prop]="1px"}jQuery(this.elem).show()},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(gotoEnd){var t=(new Date()).getTime();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim){if(this.options.curAnim[i]!==true){done=false}}if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){this.elem.style.display="none"}if(this.options.hide||this.options.show){for(var p in this.options.curAnim){jQuery.attr(this.elem.style,p,this.options.orig[p])}}}if(done&&jQuery.isFunction(this.options.complete)){this.options.complete.apply(this.elem)}return false}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};jQuery.fx.step={scrollLeft:function(fx){fx.elem.scrollLeft=fx.now},scrollTop:function(fx){fx.elem.scrollTop=fx.now},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now)},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit}};jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem){with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),fixed=jQuery.css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop)}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2){border(offsetParent)}if(!fixed&&jQuery.css(offsetParent,"position")=="fixed"){fixed=true}offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(jQuery.css(parent,"display"))){add(-parent.scrollLeft,-parent.scrollTop)}if(mozilla&&jQuery.css(parent,"overflow")!="visible"){border(parent)}parent=parent.parentNode}if((safari2&&(fixed||jQuery.css(offsetChild,"position")=="absolute"))||(mozilla&&jQuery.css(offsetChild,"position")!="absolute")){add(-doc.body.offsetLeft,-doc.body.offsetTop)}if(fixed){add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop))}}results={top:top,left:left}}}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true))}function add(l,t){left+=parseInt(l)||0;top+=parseInt(t)||0}return results}})();jQuery.fn.appendDom=function(A){return this.each(function(){for(element in A){var B=(typeof (A[element].tagName)==="string")?document.createElement(A[element].tagName):document.createTextNode("");delete A[element].tagName;for(attrib in A[element]){switch(typeof (A[element][attrib])){case"string":if(typeof (B[attrib])==="string"){B[attrib]=A[element][attrib]}else{if(attrib=="style"){B.style.cssText=A[element][attrib]}else{if(attrib=="f0r"){B.setAttribute("for",A[element][attrib])}else{if(attrib=="valu3"){B.value=A[element][attrib]}else{if(attrib=="checked"&&A[element][attrib]=="checked"){B.checked=true}else{B.setAttribute(attrib,A[element][attrib])}}}}}break;case"function":B[attrib]=A[element][attrib];break;case"object":if(attrib==="childNodes"){$(B).appendDom(A[element][attrib])}break}}this.appendChild(B)}})};jQuery.fn.checkbox=function(A){if(jQuery.browser.msie&&(parseFloat(jQuery.browser.version)<7)){}var B={className:"jquery-checkbox",empty:"empty.png"};B=jQuery.extend(B,A||{});return this.each(function(){var D=jQuery('<div class="'+B.className+'-box"><div class="'+B.className+'"><div class="mark"><img src="'+B.empty+'" /></div></div></div>').hover(function(){jQuery("."+B.className,this).addClass(B.className+"-hover")},function(){jQuery("."+B.className,this).removeClass(B.className+"-hover")});if(this._div&&(oldDiv=jQuery(this._div))){clearInterval(this._int);oldDiv.replaceWith(jQuery(this))}jQuery(this).after(D).css({display:"none"}).appendTo(D);this._div=D;var C=this;this._disabled=(this.disabled?true:false);this._checked=(this.checked?true:false);this._int=setInterval(function(){if(C._disabled!=C.disabled){C._disabled=(C.disabled?true:false);if(C.disabled){jQuery("."+B.className,D).addClass(B.className+"-disabled")}else{jQuery("."+B.className,D).removeClass(B.className+"-disabled")}}if(C._checked!=C.checked){C._checked=(C.checked?true:false);if(C.checked){D.addClass(B.className+"-checked")}else{D.removeClass(B.className+"-checked")}}},10);jQuery(D).click(function(){jQuery("input",this).click()});jQuery(D).parent().find("label").click(function(){jQuery("input",$(this).parent()).click()});jQuery("img",D).bind("dragstart",function(){return false}).bind("mousedown",function(){return false});if(window.getSelection){jQuery(D).css("MozUserSelect","none")}if(this.checked){D.addClass(B.className+"-checked")}if(this.disabled){jQuery("."+B.className,D).addClass(B.className+"-disabled")}})};(function(B){B.dimensions={version:"1.2"};B.each(["Height","Width"],function(D,C){B.fn["inner"+C]=function(){if(!this[0]){return }var F=C=="Height"?"Top":"Left",E=C=="Height"?"Bottom":"Right";return this.is(":visible")?this[0]["client"+C]:A(this,C.toLowerCase())+A(this,"padding"+F)+A(this,"padding"+E)};B.fn["outer"+C]=function(F){if(!this[0]){return }var H=C=="Height"?"Top":"Left",E=C=="Height"?"Bottom":"Right";F=B.extend({margin:false},F||{});var G=this.is(":visible")?this[0]["offset"+C]:A(this,C.toLowerCase())+A(this,"border"+H+"Width")+A(this,"border"+E+"Width")+A(this,"padding"+H)+A(this,"padding"+E);return G+(F.margin?(A(this,"margin"+H)+A(this,"margin"+E)):0)}});B.each(["Left","Top"],function(D,C){B.fn["scroll"+C]=function(E){if(!this[0]){return }return E!=undefined?this.each(function(){this==window||this==document?window.scrollTo(C=="Left"?E:B(window)["scrollLeft"](),C=="Top"?E:B(window)["scrollTop"]()):this["scroll"+C]=E}):this[0]==window||this[0]==document?self[(C=="Left"?"pageXOffset":"pageYOffset")]||B.boxModel&&document.documentElement["scroll"+C]||document.body["scroll"+C]:this[0]["scroll"+C]}});B.fn.extend({position:function(){var H=0,G=0,F=this[0],I,C,E,D;if(F){E=this.offsetParent();I=this.offset();C=E.offset();I.top-=A(F,"marginTop");I.left-=A(F,"marginLeft");C.top+=A(E,"borderTopWidth");C.left+=A(E,"borderLeftWidth");D={top:I.top-C.top,left:I.left-C.left}}return D},offsetParent:function(){var C=this[0].offsetParent;while(C&&(!/^body|html$/i.test(C.tagName)&&B.css(C,"position")=="static")){C=C.offsetParent}return B(C)}});function A(C,D){return parseInt(B.curCSS(C.jquery?C[0]:C,D,true))||0}})(jQuery);(function(){var B;B=jQuery.fn.flash=function(G,F,D,I){var H=D||B.replace;F=B.copy(B.pluginOptions,F);if(!B.hasFlash(F.version)){if(F.expressInstall&&B.hasFlash(6,0,65)){var E={flashvars:{MMredirectURL:location,MMplayerType:"PlugIn",MMdoctitle:jQuery("title").text()}}}else{if(F.update){H=I||B.update}else{return this}}}G=B.copy(B.htmlOptions,E,G);return this.each(function(){H.call(this,B.copy(G))})};B.copy=function(){var F={},E={};for(var G=0;G<arguments.length;G++){var D=arguments[G];if(D==undefined){continue}jQuery.extend(F,D);if(D.flashvars==undefined){continue}jQuery.extend(E,D.flashvars)}F.flashvars=E;return F};B.hasFlash=function(){if(/hasFlash\=true/.test(location)){return true}if(/hasFlash\=false/.test(location)){return false}var E=B.hasFlash.playerVersion().match(/\d+/g);var F=String([arguments[0],arguments[1],arguments[2]]).match(/\d+/g)||String(B.pluginOptions.version).match(/\d+/g);for(var D=0;D<3;D++){E[D]=parseInt(E[D]||0);F[D]=parseInt(F[D]||0);if(E[D]<F[D]){return false}if(E[D]>F[D]){return true}}return true};B.hasFlash.playerVersion=function(){try{try{var D=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");try{D.AllowScriptAccess="always"}catch(E){return"6,0,0"}}catch(E){}return new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version").replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}catch(E){try{if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){return(navigator.plugins["Shockwave Flash 2.0"]||navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g,",").match(/^,?(.+),?$/)[1]}}catch(E){}}return"0,0,0"};B.htmlOptions={flashvars:{},pluginspage:"http://www.adobe.com/go/getflashplayer",src:"#",type:"application/x-shockwave-flash"};B.pluginOptions={expressInstall:false,update:true,version:"6.0.65"};B.replace=function(D){this.innerHTML='<div class="alt">'+this.innerHTML+"</div>";jQuery(this).addClass("flash-replaced").prepend(B.transform(D))};B.update=function(E){var D=String(location).split("?");D.splice(1,0,"?hasFlash=true&");D=D.join("");var F='<p>This content requires the Flash Player. <a href="http://www.adobe.com/go/getflashplayer">Download Flash Player</a>. Already have Flash Player? <a href="'+D+'">Click here.</a></p>';this.innerHTML='<span class="alt">'+this.innerHTML+"</span>";jQuery(this).addClass("flash-update").prepend(F)};function A(){var E="";for(var D in this){if(typeof this[D]!="function"){E+=D+'="'+this[D]+'" '}}return E}function C(){var E="";for(var D in this){if(typeof this[D]!="function"){E+=D+"="+encodeURIComponent(this[D])+"&"}}return E.replace(/&$/,"")}B.transform=function(D){D.toString=A;if(D.flashvars){D.flashvars.toString=C}return"<embed "+String(D)+"/>"};if(window.attachEvent){window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){};__flash_savedUnloadHandler=function(){}})}})();jQuery.extend({fxQueues:{queues:[],enqueue:function(F,B,E,G){G=G||"end";var A=this.createIfNotExists(F,B,G);var D=(jQuery.isFunction(E.callback))?E.callback:function(){};E.callback=function(){jQuery.fxQueues.dequeue(F,B,E.who);D()};E.stopped=false;if(A.items&&E.who&&E.properties&&E.speed){if(B){E.finished=false;var C=this.getScope(F,B);C.items.push(E)}else{if(G=="end"||A.items.length==0){A.items.push(E)}else{if(G=="front"){A.items.splice(1,0,E)}}}}if(A.items.length==1||(A.items[0].name&&A.items[0].name==B)){this.start(F)}return true},dequeue:function(F,B,C){var A=jQuery.fxQueues.getQueue(F);if(A.items){var G=0;if(A.items[0].items&&A.items[0].items.length){var E=false;for(var D=0;D<A.items[0].items.length;D++){if(!E||C==A.items[0].items[D].who){A.items[0].items[D].finished=true;E=true}if(A.items[0].items[D].finished){G++}}}if((A.items[0].items&&A.items[0].items.length==G)||(A.items[0].who==C)){A.items.shift();if(A.items.length==0){jQuery.fxQueues.clear(F)}else{jQuery.fxQueues.start(F)}}}},clear:function(A){for(var B=0;B<this.queues.length;B++){if(this.queues[B].name==A){this.queues.splice(B,1)}}return true},createIfNotExists:function(E,B,C){var A=this.getQueue(E);if(!A){this.queues.push({name:E,items:[]});A=this.queues[this.queues.length-1]}if(B){var D=this.getScope(E,B);if(!D){if(A.items.length==0||C=="end"){A.items.push({name:B,items:[]})}else{if(C=="front"){A.items.splice(1,0,{name:B,items:[]})}}}}return A},getQueue:function(B){for(var A=0;A<this.queues.length;A++){if(this.queues[A].name==B){return this.queues[A]}}return false},getScope:function(D,A){for(var C=0;C<this.queues.length;C++){if(this.queues[C].name==D){for(var B=0;B<this.queues[C].items.length;B++){if(this.queues[C].items[B].name==A){return this.queues[C].items[B]}}}}return false},start:function(D){var A=this.getQueue(D);if(A.items){var C=A.items[0];if(C.who){C.stopped=false;C.who.performAnimation(C)}else{if(C.items){for(var B=0;B<C.items.length;B++){if(!C.items[B].finished){C.items[B].stopped=false;C.items[B].who.performAnimation(C.items[B])}}}}}return true},stop:function(D){var A=this.getQueue(D);if(A.items){var C=A.items[0];if(C.who){C.stopped=true;C.who.stop()}else{if(C.items){for(var B=0;B<C.items.length;B++){if(!C.items[B].finished){C.items[B].stopped=true;C.items[B].who.stop()}}}}}}}});jQuery.fn.extend({animate:function(B,C,H,G,E,I,A,D,F){if(C&&C.constructor==Object){G=C.easing||null;H=C.callback||null;E=C.queue||null;I=C.scope||null;A=C.queuePosition||null;D=C.wait||null;C=C.speed||null;F=C.changeOverflow||true}E=E||this;jQuery.fxQueues.enqueue(E,I,{who:this,properties:B,speed:C,easing:G,callback:H,wait:D},A);return this},performAnimation:function(E){var H=E.properties;var C=E.speed;var G=E.easing;var F=E.callback;var D=E.wait;var B=E.changeOverflow;var A=jQuery.speed(C,G,F);return this.each(function(){A=jQuery.extend({},A);var J=jQuery(this).is(":hidden"),I=this;for(var K in H){if(H[K]=="hide"&&J||H[K]=="show"&&!J){return jQuery.isFunction(A.complete)&&A.complete.apply(this)}if(K=="height"||K=="width"){A.display=jQuery.css(this,"display");A.overflow=this.style.overflow}}if(B&&A.overflow!=null){this.style.overflow="hidden"}A.curAnim=jQuery.extend({},H);jQuery.each(H,function(M,Q){var P=new jQuery.fx(I,A,M);if(/toggle|show|hide/.test(Q)){setTimeout(function(){if(!E.stopped){P[Q=="toggle"?J?"show":"hide":Q](H)}},D)}else{var O=Q.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),R=P.cur(true)||0;if(O){var L=parseFloat(O[2]),N=O[3]||"px";if(N!="px"){I.style[M]=(L||1)+N;R=((L||1)/P.cur(true))*R;I.style[M]=R+N}if(O[1]){L=((O[1]=="-="?-1:1)*L)+R}setTimeout(function(){if(!E.stopped){P.custom(R,L,N)}},D)}else{setTimeout(function(){if(!E.stopped){P.custom(R,Q,"")}},D)}}});return true})},speed:function(C,D,B){var A=C&&C.constructor==Object?C:{complete:B||!B&&D||jQuery.isFunction(C)&&C,duration:C,easing:B&&D||D&&D.constructor!=Function&&D};A.duration=(A.duration&&A.duration.constructor==Number?A.duration:{slow:600,fast:200}[A.duration])||400;return A}});(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.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}if(A.browser.opera){E=-D.wheelDelta}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/default/1pxt.gif"},B);if(isIE6()){jQuery(this).find("img[@src$=.png]").each(function(){pngFixImage(this)})}return jQuery}})(jQuery);function pngFixImage(M){var G=jQuery(M);G.css({display:"inline-block"});if(G.attr("src").indexOf("textimage/")!=-1){var F=new Image();F.src=G.attr("src");G.attr("width",F.width);G.attr("height",F.height)}else{G.attr("width",G.width());G.attr("height",G.height())}var P=G.attr("pngFixId");if(P){G.parent().find("span[pngFixId="+P+"]:first").remove()}else{P=new Date().getTime();G.attr("pngFixId",P)}var N="";var C="";var B=(G.attr("id"))?'id="'+G.attr("id")+'" ':"";var O=(G.attr("class"))?'class="'+G.attr("class")+'" ':"";var I=(G.attr("title"))?'title="'+G.attr("title")+'" ':"";var H=(G.attr("alt"))?'alt="'+G.attr("alt")+'" ':"";var D=(G.attr("align"))?"float:"+G.attr("align")+";":"";var A=(G.parent().attr("href"))?"cursor:hand;":"";var K='pngFixId="'+P+'"';if(M.style.border){N+="border:"+M.style.border+";";M.style.border=""}if(M.style.padding){N+="padding:"+M.style.padding+";";M.style.padding=""}if(M.style.margin){N+="margin:"+M.style.margin+";";M.style.margin=""}var J=(M.style.cssText);C+="<span "+B+O+I+H+K;var L="relative";if(G.css("position")=="absolute"){L="absolute"}var E="inline-block";if(hasClass(G,["centerImage"])){E="block"}C+='style="position:'+L+";white-space:pre-line;display:"+E+";background:transparent;"+D+A;if(!hasClass(G,["centerImage","leftImage","rightImage","thumb","name"])){C+="width:"+G.width()+"px;height:"+G.height()+"px;"}C+="filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+G.attr("src")+"', sizingMethod='scale');";C+=J+'"></span>';if(N!=""){C='<span style="position:'+L+";display:"+E+";"+N+A+"width:"+G.width()+"px;height:"+G.height()+'px;">'+C+"</span>"}G.hide();G.after(C)}jQuery.jScrollPane={active:[]};jQuery.fn.jScrollPane=function(A){A=jQuery.extend({scrollbarWidth:10,scrollbarMargin:5,wheelSpeed:18,showArrows:true,arrowSize:0,animateTo:false,dragMinHeight:1,dragMaxHeight:99999,animateInterval:100,animateStep:3,maintainPosition:true},A);return this.each(function(){var J=jQuery(this);if(jQuery(this).parent().is(".jScrollPaneContainer")){var v=A.maintainPosition?J.offset().top-jQuery(this).parent().offset().top:0;var H=jQuery(this).parent();var W=H.innerWidth();var x=H.outerHeight();var I=x;if(H.unmousewheel){H.unmousewheel()}jQuery(">.jScrollPaneTrack, >.jScrollArrowUp, >.jScrollArrowDown",H).remove();J.css({top:0})}else{var v=0;this.originalPadding=J.css("paddingTop")+" "+J.css("paddingRight")+" "+J.css("paddingBottom")+" "+J.css("paddingLeft");this.originalSidePaddingTotal=(parseInt(J.css("paddingLeft"))||0)+(parseInt(J.css("paddingRight"))||0);var W=J.innerWidth();var x=J.innerHeight();var I=x;J.wrap(jQuery("<div></div>").attr({className:"jScrollPaneContainer"}).css({height:x+"px",width:W+"px"}));jQuery(document).bind("emchange",function(w,y,p){J.jScrollPane(A)})}var h=this.originalSidePaddingTotal;var e=W-A.scrollbarWidth-A.scrollbarMargin-h;if(e<0){e=0}J.css({height:"auto",width:e+"px",paddingRight:A.scrollbarMargin+"px"});var f=J.outerHeight();var b=x/f;if(b<0.99){var E=J.parent();E.append(jQuery("<div></div>").attr({className:"jScrollPaneTrack"}).css({width:A.scrollbarWidth+"px"}).append(jQuery("<div></div>").attr({className:"jScrollPaneDrag"}).css({width:A.scrollbarWidth+"px"}).append(jQuery("<div></div>").attr({className:"jScrollPaneDragTop"}).css({width:A.scrollbarWidth+"px"}),jQuery("<div></div>").attr({className:"jScrollPaneDragBottom"}).css({width:A.scrollbarWidth+"px"}))));var s=jQuery(">.jScrollPaneTrack",E);var K=jQuery(">.jScrollPaneTrack .jScrollPaneDrag",E);if(A.showArrows){var Z;var u;var M;var j;var c=function(){if(j>4||j%4==0){r(m+u*U)}j++};var G=function(p){jQuery("body").unbind("mouseup",G);Z.removeClass("jScrollActiveArrowButton");clearInterval(M)};var S=function(){jQuery("body").bind("mouseup",G);Z.addClass("jScrollActiveArrowButton");j=0;c();M=setInterval(c,100)};E.append(jQuery("<a></a>").attr({href:"javascript:;",className:"jScrollArrowUp"}).css({width:A.scrollbarWidth+"px"}).html("Scroll up").bind("mousedown",function(){Z=jQuery(this);u=-1;S();this.blur();return false}),jQuery("<a></a>").attr({href:"javascript:;",className:"jScrollArrowDown"}).css({width:A.scrollbarWidth+"px"}).html("Scroll down").bind("mousedown",function(){Z=jQuery(this);u=1;S();this.blur();return false}));if(A.arrowSize){I=x-A.arrowSize-A.arrowSize;s.css({height:I+"px",top:A.arrowSize+"px"})}else{var k=jQuery(">.jScrollArrowUp",E).height();A.arrowSize=k;I=x-k-jQuery(">.jScrollArrowDown",E).height();s.css({height:I+"px",top:k+"px"})}}var o=jQuery(this).css({position:"absolute",overflow:"visible"});var B;var R;var U;var m=0;var P=b*x/2;var T=function(w,z){var y=z=="X"?"Left":"Top";return w["page"+z]||(w["client"+z]+(document.documentElement["scroll"+y]||document.body["scroll"+y]))||0};var Y=function(){return false};var n=function(){g();B=K.offset(false);B.top-=m;R=I-K[0].offsetHeight;U=2*A.wheelSpeed*R/f};var C=function(p){n();P=T(p,"Y")-m-B.top;jQuery("body").bind("mouseup",N).bind("mousemove",a);if(jQuery.browser.msie){jQuery("body").bind("dragstart",Y).bind("selectstart",Y)}return false};var N=function(){jQuery("body").unbind("mouseup",N).unbind("mousemove",a);P=b*x/2;if(jQuery.browser.msie){jQuery("body").unbind("dragstart",Y).unbind("selectstart",Y)}};var r=function(w){w=w<0?0:(w>R?R:w);m=w;K.css({top:w+"px"});var y=w/R;o.css({top:((x-f)*y)+"px"});J.trigger("scroll")};var a=function(p){r(T(p,"Y")-B.top-P)};var i=Math.max(Math.min(b*(x-A.arrowSize*2),A.dragMaxHeight),A.dragMinHeight);K.css({height:i+"px"}).bind("mousedown",C);var d;var L;var F;var l=function(){if(L>8||L%4==0){r((m-((m-F)/2)))}L++};var t=function(){clearInterval(d);jQuery("body").unbind("mouseup",t).unbind("mousemove",X)};var X=function(p){F=T(p,"Y")-B.top-P};var O=function(p){n();X(p);L=0;jQuery("body").bind("mouseup",t).bind("mousemove",X);d=setInterval(l,100);l()};s.bind("mousedown",O);if(E.mousewheel){E.mousewheel(function(w,z){n();g();var y=m;r(m-z*U);var p=y!=m;return !p},false)}var D;var Q;function V(){var p=(D-m)/A.animateStep;if(p>1||p<-1){r(m+p)}else{r(D);g()}}var g=function(){if(Q){clearInterval(Q);delete D}};var q=function(y,p){if(typeof y=="string"){$e=jQuery(y,this);if(!$e.length){return }y=$e.offset({relativeTo:this}).top}g();var w=-y/(x-f)*R;if(!p||A.animateTo){D=w;Q=setInterval(V,A.animateInterval)}else{r(w)}};J[0].scrollTo=q;J[0].scrollBy=function(w){var p=-parseInt(o.css("top"))||0;q(p+w)};n();q(-v,true);jQuery.jScrollPane.active.push(J[0])}else{J.css({height:x+"px",width:W-this.originalSidePaddingTotal+"px",padding:this.originalPadding})}})};jQuery(window).bind("unload",function(){var B=jQuery.jScrollPane.active;for(var A=0;A<B.length;A++){B[A].scrollTo=B[A].scrollBy=null}});(function(A){A.fn.addOption=function(){var H=function(N,J,L,O){var M=document.createElement("option");M.value=J,M.text=L;var P=N.options;var I=P.length;if(!N.cache){N.cache={};for(var K=0;K<I;K++){N.cache[P[K].value]=K}}if(typeof N.cache[J]=="undefined"){N.cache[J]=I}N.options[N.cache[J]]=M;if(O){M.selected=true}};var C=arguments;if(C.length==0){return this}var G=true;var B=false;var E,D,F;if(typeof (C[0])=="object"){B=true;E=C[0]}if(C.length>=2){if(typeof (C[1])=="boolean"){G=C[1]}else{if(typeof (C[2])=="boolean"){G=C[2]}}if(!B){D=C[0];F=C[1]}}this.each(function(){if(this.nodeName.toLowerCase()!="select"){return }if(B){for(var I in E){H(this,I,E[I],G)}}else{H(this,D,F,G)}});return this};A.fn.ajaxAddOption=function(D,F,B,E,C){if(typeof (D)!="string"){return this}if(typeof (F)!="object"){F={}}if(typeof (B)!="boolean"){B=true}this.each(function(){var G=this;A.getJSON(D,F,function(H){A(G).addOption(H,B);if(typeof E=="function"){if(typeof C=="object"){E.apply(G,C)}else{E.call(G)}}})});return this};A.fn.removeOption=function(){var B=arguments;if(B.length==0){return this}var D=typeof (B[0]);var C,E;if(D=="string"||D=="object"||D=="function"){C=B[0]}else{if(D=="number"){E=B[0]}else{return this}}this.each(function(){if(this.nodeName.toLowerCase()!="select"){return }if(this.cache){this.cache=null}var F=false;var I=this.options;if(!!C){var G=I.length;for(var H=G-1;H>=0;H--){if(C.constructor==RegExp){if(I[H].value.match(C)){F=true}}else{if(I[H].value==C){F=true}}if(F&&B[1]===true){F=I[H].selected}if(F){I[H]=null}F=false}}else{if(B[1]===true){F=I[E].selected}else{F=true}if(F){this.remove(E)}}});return this};A.fn.sortOptions=function(C){var B=typeof (C)=="undefined"?true:!!C;this.each(function(){if(this.nodeName.toLowerCase()!="select"){return }var F=this.options;var D=F.length;var G=[];for(var E=0;E<D;E++){G[E]={v:F[E].value,t:F[E].text}}G.sort(function(I,H){o1t=I.t.toLowerCase(),o2t=H.t.toLowerCase();if(o1t==o2t){return 0}if(B){return o1t<o2t?-1:1}else{return o1t>o2t?-1:1}});for(var E=0;E<D;E++){F[E].text=G[E].t;F[E].value=G[E].v}});return this};A.fn.selectOptions=function(D,B){var C=D;var E=typeof (D);var F=B||false;if(E!="string"&&E!="function"&&E!="object"){return this}this.each(function(){if(this.nodeName.toLowerCase()!="select"){return this}var I=this.options;var G=I.length;for(var H=0;H<G;H++){if(C.constructor==RegExp){if(I[H].value.match(C)){I[H].selected=true}else{if(F){I[H].selected=false}}}else{if(I[H].value==C){I[H].selected=true}else{if(F){I[H].selected=false}}}}});return this};A.fn.copyOptions=function(D,C){var B=C||"selected";if(A(D).size()==0){return this}this.each(function(){if(this.nodeName.toLowerCase()!="select"){return this}var G=this.options;var E=G.length;for(var F=0;F<E;F++){if(B=="all"||(B=="selected"&&G[F].selected)){A(D).addOption(G[F].value,G[F].text)}}});return this};A.fn.containsOption=function(E,C){var D=false;var B=E;var F=typeof (B);var G=typeof (C);if(F!="string"&&F!="function"&&F!="object"){return G=="function"?this:D}this.each(function(){if(this.nodeName.toLowerCase()!="select"){return this}if(D&&G!="function"){return false}var J=this.options;var H=J.length;for(var I=0;I<H;I++){if(B.constructor==RegExp){if(J[I].value.match(B)){D=true;if(G=="function"){C.call(J[I])}}}else{if(J[I].value==B){D=true;if(G=="function"){C.call(J[I])}}}}});return G=="function"?this:D};A.fn.selectedValues=function(){var B=[];this.find("option:selected").each(function(){B[B.length]=this.value});return B}})(jQuery);function toggleCarlineGroup(A){hideFleetTooltip();showWait();dwrCarlineService.toggleCarlineGroup(A,processDWRResult)}function toggleBodyFilter(A){hideFleetTooltip();showWait();dwrCarlineService.toggleBodyFilter(A,processDWRResult)}function selectCarline(A){hideFleetTooltip();showWait();dwrCarlineService.selectCarline(A,processDWRResult)}var carlineUpdate=function(C){var A=$("#carlines #content");updateHeadlessFilter(C.groupFilter.filter,"cgf",$("#group .container",A));updateHeadlessFilter(C.bodyFilter.filter,"bgf",$("#body .container",A));updateHeadlessFilter(C.carlines.filter,"c",$("#carline .container",A));var B=$("#info .container",A);$(".top .prefix",B).text(C.info.quick);$(".top .suffix",B).text(C.info.headline);$(".bottom",B).text(C.info.text);$(".container",A).jScrollPane();updateMotionBean(A,C.motion)};var fleetUpdate=function(C){var A=$("#imagearea");if(A){A.hide()}var B=$("#carlines #header #fleet");B.empty();var D=C.list;if(D.length>0){$.each(D,function(){var E=C.tiny?"tiny":this.big?"big":"small";var F=[{tagName:"div",className:"car "+E,childNodes:[{tagName:"img",className:"thumb",src:this.mainImage.src}]}];if(this.big){var G=[];$.each(this.shortcuts,function(){G.push({tagName:"span",className:"wbg",childNodes:[{tagName:"span",className:"link",childNodes:[{tagName:"a",href:this.targetAddress,innerHTML:this.text}]}]})});F[0].childNodes.push({tagName:"div",className:"text",childNodes:G})}else{F[0].childNodes.push({tagName:"img",className:"name",src:this.subImage.src})}F[0].childNodes.push({tagName:"div",className:"listener "+E+"listener",childNodes:[{tagName:"div",className:"data",childNodes:[{tagName:"div",className:"headline",childNodes:[{tagName:"img",src:"textimage/"+tiMimeTypeSuffix+"/"+C.languageKey+"/fleetHeadline/"+encodeURI(this.headline),alt:this.headline}]},{tagName:"div",className:"text",innerHTML:this.text},{tagName:"div",className:"foot",childNodes:[{tagName:"div",className:"wbg fl",childNodes:[{tagName:"div",className:"link",childNodes:[{tagName:"a",href:this.link.targetAddress,innerHTML:this.link.text}]}]}]}]}]});B.appendDom(F)});B.css({display:"block"});B.pngFix();hideFocus(B.find("a"));updateFleet({fade:true})}else{B.removeClass("hidden");B.css(cssVisible)}};var menuUpdate=function(B){var D=B.languageKey;var F=$("#menu");var G=$("#language",F).clone();var E=$("#languages",F).clone();F.empty();$.each(B.entries,function(){if(this.show){createMenuentry(F,"Entry",this.id,this.entry.text,this.entry.targetAddress,this.enabled,this.selected,D)}});var C=B.next;createMenuentry(F,"Continue","continue",C.entry.text,C.entry.targetAddress,C.enabled,false,D);F.append(E);F.append(G);var A=$("#menu #language img").attr("alt");$("#menu #language").hoverIntent({sensitivity:10,interval:50,over:function(){$("#menu #language img").attr("src","textimage/"+tiMimeTypeSuffix+"/"+D+"/menuEntryHighlighted/"+A)},timeout:0,out:function(){$("#menu #language img").attr("src","textimage/"+tiMimeTypeSuffix+"/"+D+"/menuEntry/"+A)}});F.pngFix();hideFocus(F.find("a"))};function createMenuentry(B,J,C,K,A,I,G,H){var F;if(G){F="Highlighted"}else{if(I){F=""}else{F="Disabled"}}var E="menu"+J+F;var D=[{tagName:"div",id:"menu_"+C,className:J.toLowerCase(),childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"textimage/"+tiMimeTypeSuffix+"/"+H+"/"+E+"/"+encodeURI(K),alt:K}]}]}];if(I){D[0].childNodes[0].href=A}B.appendDom(D);if(I&&!G){$("#menu #menu_"+C).hoverIntent({sensitivity:10,interval:50,over:function(){$("#menu #menu_"+C+" img").attr("src","textimage/"+tiMimeTypeSuffix+"/"+H+"/menu"+J+"Highlighted/"+encodeURI(K))},timeout:0,out:function(){$("#menu #menu_"+C+" img").attr("src","textimage/"+tiMimeTypeSuffix+"/"+H+"/menu"+J+"/"+encodeURI(K))}})}}function toggleEngineFilter(A){showWait();dwrEngineService.toggleFilter(A,processDWRResult)}function resetEngineFilter(){showWait();dwrEngineService.resetFilter(processDWRResult)}function selectEngine(A){showWait();dwrEngineService.selectEngine(A,processDWRResult)}function modelInfo(A){showWait();dwrEngineService.modelInfo(A,processDWRResult)}function compareWith(A){tracking.actionStarted("compare_engine",tracking.getEngineComparePageName());showWait();closeEngineSelectBox();dwrEngineService.compareWith(A,processDWRResult)}function filterValueInfo(A){showWait();dwrEngineService.filterValueInfo(A,processDWRResult)}var engineUpdate=function(E){var F=$("#engines #content");var G=$("#left",F);var C=$("#right",F);var A=$(".container",F);updateCompleteFilterGroup(E.filters,"fg",$(".filter",G));$.each(E.headlines,function(){var H=$("#mh_"+this.id,C);H.removeClass("hidden");H.css(this.visible?cssVisible:cssHidden);$.each(this.items,function(){var L=this.id.replace("/","\\/");var M=$("#mi_"+L,C);var K=$("#ms_"+L,C);M.removeClass("hidden");K.removeClass("hidden");if(this.visible){M.css(cssVisible);K.css(cssVisible);var I=$(".button img",M);var J=$(".l",M);if(this.selected){I.attr("src","images/default/radio_selected.gif");J.removeAttr("href")}else{I.attr("src","images/default/radio_default.gif");J.attr("href","javascript:selectEngine('"+this.id+"');")}}else{M.hide();K.hide()}})});var D=["headline"];var B=$(".foot",C);if(E.currentHasInfo){B.css(cssVisible);D.push("foot")}else{B.hide()}updateHeight(C,$(".container",C),$(".content",C),D,mainContentHeight);$(".headline .counter .shown",C).text(E.enginesShown);A.jScrollPane()};var selectedInfoTab;function modelInfoUpdate(P){if(P.showAbstract||P.hasTechnicalData||P.hasEquipment){var B=[];B.push({tagName:"div",className:"title",innerHTML:P.modelText});if(P.priceOne||P.priceTwo){B.push({tagName:"div",className:"prices",innerHTML:formatPricesFallback(P.priceOne,P.priceTwo)})}var T=[];var K=[];K.push({tagName:"div",className:"left",childNodes:B});if(P.hasModels){var C=[];$.each(P.engineGroups,function(){C.push({tagName:"div",className:"title",innerHTML:this.name});$.each(this.engines,function(){C.push({tagName:"div",className:"item",childNodes:[{tagName:"a",href:"javascript:compareWith('"+this.id+"');",innerHTML:this.name}]})})});K.push({tagName:"div",className:"right",childNodes:[{tagName:"div",className:"choice",childNodes:[{tagName:"div",className:"current",childNodes:[{tagName:"div",innerHTML:P.compareText}]}]},{tagName:"div",className:"enginevalues",childNodes:[{tagName:"div",className:"container",childNodes:C}]},{tagName:"div",className:"prices"}]})}K.push(createClearDiv());T.push(createCloseButton(P.close,"closeModelInfo","miclose"));T.push({tagName:"div",className:"headline",innerHTML:P.headline});var G=[];G.push(createLink(null,P.abstractText,"ab"));G.push(createLink("javascript:switchTab('equip');",P.standardEquipmentText,"eq inactive"));G.push(createLink("javascript:switchTab('tech');",P.technicalDataText,"te inactive"));G.push(createClearDiv());T.push({tagName:"div",className:"tabs",childNodes:G});T.push({tagName:"div",className:"header",childNodes:K});T.push({tagName:"div",id:"dabstract",childNodes:[{tagName:"div",className:"container",childNodes:parseAbstractBean(P.abstractBean)}]});T.push({tagName:"div",id:"dequip",childNodes:[{tagName:"div",className:"container",childNodes:parseInfoHierarchy(P.equipmentHierarchy,false)}]});T.push({tagName:"div",id:"dtech",childNodes:[{tagName:"div",className:"container",childNodes:parseInfoHierarchy(P.technicalDataHierarchy,true)}]});openDialog("modelInfo",T,repositionModelInfo,modelInfoEscapeCallback,true);var J=$("#modelInfo");J.find(".enginevalues").hide();var M=J.find(".content");var Q=J.find(".tabs");var H=J.find("#dabstract");var F=J.find("#dequip");var L=J.find("#dtech");var O=J.find(".header");var R=["headline","header"];var S=["headline"];var A=0;if(!P.hasEquipment){Q.find(".eq").parent().parent().hide()}else{A++}if(!P.hasTechnicalData){Q.find(".te").parent().parent().hide()}else{A++}if(P.showAbstract){A++}else{Q.find(".ab").parent().parent().hide()}if(A>0){R.push("tabs");S.push("tabs")}else{Q.hide()}var N;if(isIE6()){N=315}else{N=M.height()}var D=L.find(".container");updateHeight(M,D,L,R,N);D.jScrollPane();L.hide();var I=F.find(".container");updateHeight(M,I,F,R,N);I.jScrollPane();F.hide();var E=H.find(".container");updateHeight(M,E,H,S,N);E.jScrollPane();J.find(".current").bind("click",openEngineSelectBox);O.find(".left").hide();O.hide();if(!P.showAbstract){if(P.hasEquipment){switchTab("equip")}else{if(P.hasTechnicalData){switchTab("tech")}}}}}function switchTab(A){var F=$("#modelInfo");var G=F.find(".tabs");var B=G.find(".eq");var C=G.find(".te");var I=G.find(".ab");var J=F.find("#dequip");var H=F.find("#dtech");var E=F.find("#dabstract");var D=F.find(".header");var K=F.find(".restart");if(A=="tech"){B.attr("href","javascript:switchTab('equip');");B.addClass("inactive");I.attr("href","javascript:switchTab('abstract');");I.addClass("inactive");C.removeAttr("href");C.removeClass("inactive");J.hide();E.hide();H.show();D.show();K.show();selectedInfoTab="tech"}else{if(A=="equip"){C.attr("href","javascript:switchTab('tech');");C.addClass("inactive");I.attr("href","javascript:switchTab('abstract');");I.addClass("inactive");B.removeAttr("href");B.removeClass("inactive");J.show();H.hide();E.hide();D.show();K.show();selectedInfoTab="equip"}else{if(A=="abstract"){B.attr("href","javascript:switchTab('equip');");B.addClass("inactive");C.attr("href","javascript:switchTab('tech');");C.addClass("inactive");I.removeAttr("href");I.removeClass("inactive");J.hide();H.hide();E.show();D.hide();K.hide()}}}}function parseAbstractBean(D){var E=[];if(D){E.push({tagName:"div",className:"spacer",innerHTML:"&nbsp;"});var C=D.hasPriceOne;var A=D.hasPriceTwo;var F="1";if(C||A){F="2"}if(C&&(A||(D.enableFactoryPrice&&D.overRuleShowPriceTwo))){F="4"}var B=[];$.each(D.abstractEntries,function(){var G=[];G.push({tagName:"td",className:"title",childNodes:[{tagName:"div",innerHTML:this.headline}]});if(C){G.push({tagName:"td",className:"priceone",innerHTML:this.priceOne?this.priceOne:"&nbsp;"})}if(C&&((D.enableFactoryPrice&&this.overrideShowPriceTwo)||A)){G.push({tagName:"td",className:"separator",innerHTML:this.priceOne||this.priceTwo?"&nbsp;/&nbsp;":"&nbsp;"})}if(((D.enableFactoryPrice&&this.overrideShowPriceTwo)||A)){G.push({tagName:"td",className:"pricetwo",innerHTML:this.priceTwo?this.priceTwo:"&nbsp;"})}B.push({tagName:"tr",childNodes:G});B.push({tagName:"tr",childNodes:[{tagName:"td",className:"underline",colspan:F,childNodes:[{tagName:"div",innerHTML:"&nbsp;"}]}]});$.each(this.texts,function(){var H=[];H.push({tagName:"td",className:"text",childNodes:[{tagName:"div",innerHTML:this.text}]});if(C){H.push({tagName:"td",className:"priceone",innerHTML:this.priceOne?this.priceOne:"&nbsp;"})}if(C&&A){H.push({tagName:"td",className:"separator",innerHTML:this.priceOne||this.priceTwo?"&nbsp;/&nbsp;":"&nbsp;"})}if(A){H.push({tagName:"td",className:"pricetwo",innerHTML:this.priceTwo?this.priceTwo:"&nbsp;"})}B.push({tagName:"tr",childNodes:H})});B.push({tagName:"tr",childNodes:[{tagName:"td",colspan:F,childNodes:[{tagName:"div",className:"spacer",innerHTML:"&nbsp;"}]}]})});E.push({tagName:"table",cellspacing:"0",cellpadding:"0",childNodes:[{tagName:"tbody",childNodes:B}]})}return E}function parseInfoHierarchy(A,C){var B=[];$.each(A,function(){if(this.headline){B.push({tagName:"div",className:"headline",innerHTML:this.headline})}$.each(this.items,function(){if(this.headline&&C){B.push({tagName:"div",className:"title",innerHTML:this.headline})}if(this.text){B.push({tagName:"div",className:"text",innerHTML:this.text})}});B.push({tagName:"div",className:"spacer",innerHTML:"&nbsp;"})});return B}var engineSelectBoxOpen=false;function openEngineSelectBox(){if(!engineSelectBoxOpen){var D=$("#modelInfo");var C=D.find(".enginevalues");var E=D.find(".current");$("body").append(C.clone());C=$("body .enginevalues:eq(1)");var B=C.find(".container");C.css({top:E.offset().top+E.outerHeight(),left:E.offset().left});C.show();engineSelectBoxOpen=true;C.width(450);B.width(450);B.parent().width(450);B.jScrollPane();var A=0;B.children().each(function(){A+=getFullHeight($(this))});if(A>225){A=225}C.height(A+5);B.parent().height(A+5);$("html").bind("click",closeEngineSelectBox);E.unbind("click",openEngineSelectBox);E.bind("click",closeEngineSelectBox);E.find("div").css({"background-image":"url( 'images/default/arrow_up.gif' )"});B.jScrollPane();B.jScrollPane();return false}return true}function closeEngineSelectBox(E){if(E&&E.target){var D=$(E.target);if(D.parent().hasClass("item")||hasClass(D,["jScrollPaneTrack","jScrollPaneDrag","jScrollPaneDragTop","jScrollPaneDragBottom","jScrollArrowUp","jScrollArrowDown"])){return true}}var B=$("#modelInfo");var A=$("body .enginevalues:eq(1)");var C=B.find(".current");if(engineSelectBoxOpen){A.remove();$("html").unbind("click",closeEngineSelectBox);C.unbind("click",closeEngineSelectBox);C.bind("click",openEngineSelectBox);C.find("div").css({backgroundImage:"url(images/default/arrow_down.gif)"});engineSelectBoxOpen=false;return false}return true}function modelInfoEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeModelInfo)&&A=="modelInfo"){functionLookup.closeModelInfo();return false}return true}function repositionModelInfo(){repositionDialog($("#modelInfo"),$("#modelInfoDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closeModelInfo(){$("html").unbind("click",closeEngineSelectBox);closeEngineSelectBox();closeDialog("modelInfo",repositionModelInfo,modelInfoEscapeCallback)}function modelComparisonUpdate(C){var H=$("#modelInfo");var E=H.find(".content");var F=H.find("#dabstract");var D=H.find(".header");var J=H.find("#dequip");var A=J.find(".container");var I=H.find("#dtech");var M=I.find(".container");var G=H.find(".tabs");D.find(".left").show();H.find(".right .current div").text(C.comparedModelName);var N="";if(C.comparedPriceOne){N+=C.comparedPriceOne}if(C.comparedPriceOne&&C.comparedPriceTwo){N+=" / "}if(C.comparedPriceTwo){N+=C.comparedPriceTwo}H.find(".right .prices").empty()[0].innerHTML=N;A.empty();M.empty();F.show();J.show();I.show();G.show();A.appendDom(parseComparisonHierarchy(C.equipHierarchy,false));M.appendDom(parseComparisonHierarchy(C.techHierarchy,true));var O=H.find(".restart");if(O.length<1){E.appendDom([{tagName:"div",className:"restart",childNodes:[{tagName:"div",className:"right",childNodes:[createLink("javascript:replaceConfiguration('"+C.restartURL+"');",C.restartText)]},createClearDiv()]}])}else{O.find("a").attr("href","javascript:replaceConfiguration('"+C.restartURL+"');")}var B=["headline","header","restart"];var P=G.find(".eq").parent().parent();if(C.hasEquip){P.show()}else{P.hide()}var L=G.find(".te").parent().parent();if(C.hasTech){L.show()}else{L.hide()}if(C.hasEquip||C.hasTech){B.push("tabs")}else{G.hide()}if(C.hasInfo){B.push("foot")}var K;if(isIE6()){K=315}else{K=E.height()}updateHeight(E,A,J,B,K);updateHeight(E,M,I,B,K);A.jScrollPane();M.jScrollPane();if(C.hasEquip&&selectedInfoTab=="equip"){switchTab("equip")}else{switchTab("tech")}}function parseComparisonHierarchy(A,C){var B=[];$.each(A,function(){if(this.headline){B.push({tagName:"div",className:"headline",innerHTML:this.headline})}$.each(this.items,function(){var D=[];var G=[];if(this.headline&&C){B.push({tagName:"div",className:"smalltitle",innerHTML:this.headline})}D.push({tagName:"div",className:"text",innerHTML:this.currentModelText});G.push({tagName:"div",className:"text",innerHTML:this.comparedModelText});var F;var E;if(C){F="smallselected";E="smallother"}else{F="selected";E="other"}if(!this.same){F+=" different";E+=" different"}B.push({tagName:"div",className:F,childNodes:D});B.push({tagName:"div",className:E,childNodes:G});B.push(createClearDiv())});B.push({tagName:"div",className:"spacer",innerHTML:"&nbsp;"})});return B}var replaceConfiguration=function(A){tracking.actionEnded("compare_engine",tracking.getEngineComparePageName());window.location.href=A};var filterValueInfoUpdate=function(D){var B=[];B.push(createCloseButton(D.close,"closeFilterValueInfoDialog"));B.push({tagName:"div",className:"dialog-headline",innerHTML:D.headline});B.push(createClearDiv());B.push({tagName:"div",className:"headline",innerHTML:""});var C=[];C.push({tagName:"div",className:"description",innerHTML:D.text});var A={tagName:"div",className:"cont",childNodes:[{tagName:"div",className:"container",childNodes:C}]};B.push(A);openDialog("filterValueInfo",B,repositionFilterValueInfo,filterValueInfoEscapeCallback,true);$("#filterValueInfo .container").jScrollPane()};function filterValueInfoEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeFilterValueInfoDialog)&&A=="filterValueInfo"){functionLookup.closeFilterValueInfoDialog();return false}return true}function repositionFilterValueInfo(){repositionDialog($("#filterValueInfo"),$("#filterValueInfoDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closeFilterValueInfoDialog(){closeDialog("filterValueInfo",repositionFilterValueInfo,filterValueInfoEscapeCallback)}function switchPartSection(A){showWait();dwrEquipmentService.switchPartSection(A,processDWRResult)}var equipmentUpdate=function(C){var A=$("#equipment #content #center");var D=$(".left",A);var B=$(".right",A);$.each(C.products,function(){var E=$("#psl_"+this.id+" a",D);var F=$("#psc_"+this.id,B);if(this.visible){E.removeClass("inactive");E.removeAttr("href");F.removeClass("hidden");F.css(cssVisible);$.each(this.parts,function(){var H=F.find("#p_"+this.id);var I=H.find(".l");if(this.actionName){I.attr("href","javascript:functionLookup['"+this.actionName+"']('"+this.id+"');")}else{I.removeAttr("href")}var G=this.checkbox?"checkbox":"radio";var M;if(this.standard){M="standard"}else{if(this.included){M="included"}else{if(this.blocked){M="disabled"}else{if(this.selected){M="selected"}else{M="default"}}}}var K=H.find(".blockedby-items");K.empty();if(this.showBlockedBy){for(var J=0;J<this.blockedBy.length;J++){K.appendDom([{tagName:"div",className:"blockedby-item",childNodes:[{tagName:"span",innerHTML:this.blockedBy[J]}]}])}K.appendDom([createClearDiv()])}var L=H.find(".icon img");L.attr("src","images/default/"+G+"_"+M+".gif");var O=H.find(".p1");if(O.length>0){O[0].innerHTML=formatPricesFallback(this.priceOne,null)}var N=H.find(".p2");if(N.length>0){N[0].innerHTML=formatPricesFallback(null,this.priceTwo)}H.find(".title .l").text(this.text)})}else{E.addClass("inactive");E.attr("href","javascript:switchPartSection('"+this.id+"');");F.hide()}});$(".container",A).jScrollPane()};function selectTop(A){showWait();dwrProductService.selectTop(A,processDWRResult)}function selectWithoutContrast(A){showWait();dwrProductService.selectWithoutContrast(processDWRResult)}var exteriorUpdate=function(B){var K=$("#exterior #content");var O=$("#right",K);var A=$("#colors",O);var C=$("#rims",O);$.each(B.packages,function(){$.each(this.parts,function(){var T=$("#p_"+this.id);var V=T.find(".icon img");var R=T.find(".l");var W=this.checkbox?"checkbox_":"radio_";var X=".gif";var Q="images/default/";var S;if(this.actionName){R.attr("href","javascript:functionLookup['"+this.actionName+"']('"+this.id+"');")}else{R.removeAttr("href")}if(this.standard){S="standard"}else{if(this.included){S="included"}else{if(this.selected){S="selected"}else{if(this.blocked){S="disabled"}else{S="default"}}}}var U=$("#p_"+this.id+"_price")[0];if(U){U.innerHTML=formatPricesFallback(this.priceOne,this.priceTwo)}T.find(".title .l").text(this.text);V.attr("src",Q+W+S+X)})});var F=$(".ematrix",A);var D=$(".container",F);var L=$(".wmatrix",C);var J=$(".container",C);if(B.showRoof){var M=$(".deck",A);var N=$(".tmatrix",M);updateTiles(B.top,"t",N);var H=$(".ttext",M);if(H.length>0){H[0].innerHTML=B.selectedTopColorText}}updateTileSections(B.ext,"e",F);updateTileSections(B.wheels,"w",L);var I=$(".etext",A)[0];if(I){I.innerHTML=B.selectedExtColorText}var P=$(".wtext",C)[0];if(P){P.innerHTML=B.selectedWheelText}var E=A.find(".price")[0];if(E){E.innerHTML=formatPricesFallback(B.selectedExtColorPriceOne,B.selectedExtColorPriceTwo)}var G=C.find(".price")[0];if(G){G.innerHTML=formatPricesFallback(B.selectedWheelPriceOne,B.selectedWheelPriceTwo)}updateHeight(A,D,F,["headline","text","price","deck"],mainContentHeight);updateHeight(C,J,L,["headline","text","price"],mainContentHeight);$(".container",K).jScrollPane()};function toggleView(){showWait();dwrImageService.toggleView(processDWRResult)}function toggleExterior(){showWait();dwrImageService.toggleExterior(processDWRResult)}function switchToExterior(){showWait();dwrImageService.switchToExterior(processDWRResult)}function switchToInterior(){showWait();dwrImageService.switchToInterior(processDWRResult)}function switchToCockpit(){showWait();dwrImageService.switchToCockpit(processDWRResult)}function toggleRoof(){showWait();dwrImageService.toggleRoof(processDWRResult)}function toggleCockpit(){showWait();dwrImageService.toggleCockpit(processDWRResult)}function toggleFullscreen(){showWait();dwrImageService.toggleFullscreen(processDWRResult)}function gallery(){showWait();dwrImageService.gallery(processDWRResult)}function generateBookmark(){showWait();dwrImageService.generateBookmark(processDWRResult)}var fullscreen=false;var exterior=false;var view360=false;var convertible=false;var roofClosed=false;var hasCockpit=false;var showCockpit=false;var imageareaUpdate=function(H){exterior=H.exterior;view360=H.showOuter360;convertible=H.convertible;roofClosed=H.roofClosed;hasCockpit=H.hasCockpit;showCockpit=H.showCockpit;if(H.fullscreen){var D=$("#imagearea #fs");var P=[createCloseButton(H.close,"toggleFullscreen"),createClearDiv(),{tagName:"div",className:"fs",childNodes:[{tagName:"div",className:"dim",childNodes:[{tagName:"div",className:"container",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]}]},{tagName:"div",className:"int",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]},{tagName:"div",className:"cockpit",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]},{tagName:"div",className:"ext",childNodes:[{tagName:"div",className:"image",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]},{tagName:"div",className:"left",childNodes:[{tagName:"a",href:"javascript:toggleView();",childNodes:[{tagName:"span",innerHTML:"&nbsp;"}]}]},{tagName:"div",className:"right",childNodes:[{tagName:"a",href:"javascript:toggleView();",childNodes:[{tagName:"span",innerHTML:"&nbsp;"}]}]}]}]},{tagName:"div",className:"bar",childNodes:[{tagName:"span",className:"ext inactive",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""},{tagName:"span",innerHTML:" "+D.find(".ext").text()}]},{tagName:"span",className:"roof",childNodes:[{tagName:"span",className:"open pointer active",innerHTML:D.find(".open").text()},{tagName:"span",className:"closed pointer active",innerHTML:D.find(".closed").text()}]},{tagName:"span",className:"int inactive",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""},{tagName:"span",innerHTML:" "+D.find(".int").text()}]},{tagName:"span",className:"cockpit inactive",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""},{tagName:"span",innerHTML:" "+D.find(".cockpit").text()}]},{tagName:"span",className:"dim inactive",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""},{tagName:"span",innerHTML:" "+H.dimensions}]}]}];openDialog("fullscreen",P,repositionFullscreen,fullscreenEscapeCallback,true);fullscreen=true;var a=$("#fullscreen");var Z=$(".content",a);var I=$(".fs .ext:first",Z);var A=$(".fs .int:first",Z);var h=$(".fs .cockpit:first",Z);var t=$(".fs .dim:first",Z);var m=$(".bar",Z);var G=$(".ext",m);var r=$(".ext img",m);var B=$(".int",m);var l=$(".int img",m);var Q=$(".cockpit",m);var F=$(".cockpit img",m);var O=$(".dim",m);var E=$(".dim img",m);t.hide();if(!H.hasCockpit){Q.hide()}if(H.dimensionDraft&&H.dimensionDraft.src&&H.dimensions){t.find("img").attr("src",H.dimensionDraft.src);O.show();dehighlight(O,showDimensions);E.attr("src","images/default/button_ext_on.gif")}else{O.hide()}if(H.exterior){I.show();A.hide();h.hide();highlight(G);r.attr("src","images/default/button_ext_off.gif");dehighlight(B,switchToInterior);l.attr("src","images/default/button_int_on.gif");dehighlight(Q,switchToCockpit);F.attr("src","images/default/button_coc_on.gif");switchImageSrc($(".image img",I),H.image.src)}else{if(H.hasCockpit&&H.showCockpit){h.show();A.hide();I.hide();highlight(Q);F.attr("src","images/default/button_coc_off.gif");dehighlight(B,switchToInterior);l.attr("src","images/default/button_int_on.gif");dehighlight(G,switchToExterior);r.attr("src","images/default/button_ext_on.gif");switchImageSrc($("img",h),H.image.src)}else{A.show();h.hide();I.hide();highlight(B);l.attr("src","images/default/button_int_off.gif");dehighlight(G,switchToExterior);r.attr("src","images/default/button_ext_on.gif");dehighlight(Q,switchToCockpit);F.attr("src","images/default/button_coc_on.gif");switchImageSrc($("img",A),H.image.src)}}var e=$(".roof",m);if(H.convertible){e.show();var T=$(".open",e);var V=$(".closed",e);if(H.roofClosed){T.show();T.bind("click",toggleRoof);V.hide();V.unbind("click")}else{V.show();V.bind("click",toggleRoof);T.hide();T.unbind("click")}}else{e.hide()}var N=$("#acc-zoom-menu-cockpitview");var K=$("#acc-zoom-menu-sideview");if(H.hasCockpit){if(H.showCockpit){N.hide();N.unbind("click");K.show();K.bind("click",toggleCockpit)}else{N.show();N.bind("click",toggleCockpit);K.hide();K.unbind("click")}}else{N.hide();N.unbind("click");K.hide();K.unbind("click")}Z.pngFix();hideFocus(a.find("a"))}else{if(fullscreen){closeDialog("fullscreen",repositionFullscreen,fullscreenEscapeCallback);fullscreen=false}var W=$("#carlines #header #fleet");W.empty();W.hide();var d=$("#imagearea");d.removeClass("hidden");d.show();var S=$("#scene",d);var U=$(".top .ext",S);var J=$(".top .int",S);var o=$(".bottom .ext",S);var X=$(".bottom .ext img",S);var f=$(".bottom .int",S);var s=$(".acc-stage-menu-cockpitview",S);var M=$(".bottom .int img",S);var g=$(".acc-stage-menu-cockpitview img",S);J.removeClass("hidden");U.removeClass("hidden");if(H.exterior){J.hide();dehighlight(f,switchToInterior);M.attr("src","images/default/button_int_on.gif");dehighlight(s,switchToCockpit);g.attr("src","images/default/button_coc_on.gif");highlight(o);X.attr("src","images/default/button_ext_off.gif");U.show();var Y=$("#acc-stage-menu-left");var k=$("#acc-stage-menu-right");var c=$("#acc-stage-menu-outer-left");var n=$("#acc-stage-menu-outer-right");if(H.showOuter360){Y.hide();k.hide();c.show();n.show();OuterView.initOuter("normal");var q=H.images;for(var p=0;p<q.length;p++){var C=q[p];OuterView.registerImage(C.src,C.PNG)}OuterView.initImages("#acc-imageHolder",H.rotation);$("#acc-imageHolderOuter360").show();$("#acc-imageHolder").pngFix();$("#imagearea .ext .imageareaImage").hide()}else{switchImageSrc($(".image .imageareaImage",U),H.image.src);Y.show();k.show();c.hide();n.hide();$("#acc-imageHolderOuter360").hide();if(isIE6()){$("#imagearea .ext img[class=imageareaImage]").hide();$("#imagearea .ext span[class=imageareaImage]").show()}else{$("#imagearea .ext .imageareaImage").show()}}}else{U.hide();switchImageSrc($(".top .int img",S),H.image.src);dehighlight(o,switchToExterior);X.attr("src","images/default/button_ext_on.gif");if(H.hasCockpit&&H.showCockpit){dehighlight(f,switchToInterior);M.attr("src","images/default/button_int_on.gif");highlight(s);g.attr("src","images/default/button_coc_off.gif")}else{dehighlight(s,switchToCockpit);g.attr("src","images/default/button_coc_on.gif");highlight(f);M.attr("src","images/default/button_int_off.gif")}J.show()}var R=S.find(".bottom .fullscreen");if(H.hasFullscreen){R.show()}else{R.hide()}var b=$(".bottom .roof",S);if(H.convertible){var L=$(".open",b);var j=$(".closed",b);b.removeClass("hidden");if(H.roofClosed){L.show();L.bind("click",toggleRoof);j.hide();j.unbind("click")}else{j.show();j.bind("click",toggleRoof);L.hide();L.unbind("click")}b.show()}else{b.hide()}if(H.hasCockpit){s.show()}else{s.hide()}hideFocus(S.find("a"))}};function repositionFullscreen(){repositionDialog($("#fullscreen"),$("#fullscreenDisabled"),$(".root"),{top:15,right:16,bottom:15,left:16},true)}function fullscreenEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.toggleFullscreen)&&A=="fullscreen"){functionLookup.toggleFullscreen();return false}return true}var priceInfoUpdate=function(B){var G=$("#imagearea #sum");var D=$(".headline img",G);var H=$(".subheadline",G);var F=$("#s_p1",G);var A=$("#s_p2",G);var K=$(".links",G);D.attr("src","textimage/"+tiMimeTypeSuffix+"/"+B.languageKey+"/sumHeadline/"+B.headline);D.attr("alt",B.headline);H.text(B.subheadline);var J=$("#sum_price-one");if(B.priceOne&&F.length>0){if(B.modelHasPriceOne){F[0].innerHTML=B.priceOne;J.show()}else{J.hide()}}else{J.hide()}var I=$("#sum_price-two");if(B.priceTwo&&A.length>0){if(B.enableFactoryPrice){if(B.modelHasPriceOne&&B.priceTwo){A[0].innerHTML=B.priceTwo;I.show()}else{I.hide()}}else{if(B.modelHasPriceTwo){A[0].innerHTML=B.priceTwo;I.show()}else{I.hide()}}}else{I.hide()}K.empty();var E=[];$.each(B.links,function(){E.push(createLink(this.targetAddress,this.text));E.push(createClearDiv())});K.appendDom(E);var C=$(".bottom",G);if(B.hasChangedParts){C.removeClass("hidden");C.css(cssVisible)}else{C.css(cssHidden)}G.pngFix()};function highlight(A){A.removeClass("pointer");A.removeClass("active");A.addClass("inactive");A.unbind("click")}function dehighlight(A,B){A.removeClass("inactive");A.addClass("active");A.addClass("pointer");A.bind("click",B)}var galleryImages=[];var galleryVideos=[];var currentGalleryImage=0;var currentGalleryVideo=0;function galleryUpdate(A){galleryImages=A.images;galleryVideos=A.videos;currentGalleryImage=0;currentGalleryVideo=0;var B=[];B.push(createCloseButton(A.close,"closeGallery","gclose"));B.push({tagName:"div",className:"headline",innerHTML:A.headline});B.push({tagName:"div",className:"stage"});B.push({tagName:"div",className:"thumbnails",childNodes:[{tagName:"div",className:"back",childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"images/default/arrow_left_big.gif",alt:""}]}]},{tagName:"div",className:"thumb predecessor2",childNodes:[{tagName:"div",childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]}]}]},{tagName:"div",className:"thumb predecessor1",childNodes:[{tagName:"div",childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]}]}]},{tagName:"div",className:"thumb current",childNodes:[{tagName:"div",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]}]},{tagName:"div",className:"thumb successor1",childNodes:[{tagName:"div",childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]}]}]},{tagName:"div",className:"thumb successor2",childNodes:[{tagName:"div",childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"images/default/1pxt.gif",alt:""}]}]}]},{tagName:"div",className:"next",childNodes:[{tagName:"a",childNodes:[{tagName:"img",src:"images/default/arrow_right_big.gif",alt:""}]}]},{tagName:"div",className:"counter"}]});if(galleryImages.length>0&&galleryVideos.length>0){B.push({tagName:"div",className:"tabs",childNodes:[createLink(null,A.slideshow,"images"),createLink(null,A.video,"videos")]})}openDialog("gallery",B,repositionGallery,galleryEscapeCallback,true);if(galleryImages.length>0){initGalleryImages()}else{initGalleryVideos()}hideFocus($("#gallery a"))}function initGalleryImages(){var C=$("#gallery .content");var E=C.find(".thumbnails");var A=C.find(".tabs");var B=A.find(".images");var D=A.find(".videos");B.removeAttr("href");B.removeClass("inactive");D.attr("href","javascript:switchGalleryTab('videos');");D.addClass("inactive");E.find(".back a").attr("href","javascript:previousImage(1);");E.find(".next a").attr("href","javascript:nextImage(1);");$(window).unbind("keypress",videoKeyPressEvent);$(window).bind("keypress",imageKeyPressEvent);updateGalleryImages()}function imageKeyPressEvent(B){var A=B.keyCode;if(A==37){previousImage(1);return false}if(A==39){nextImage(1);return false}return A==38||A==40}function videoKeyPressEvent(B){var A=B.keyCode;if(A==37){previousVideo(1);return false}if(A==39){nextVideo(1);return false}return A==38||A==40}function initGalleryVideos(){var C=$("#gallery .content");var E=C.find(".thumbnails");var A=C.find(".tabs");var B=A.find(".images");var D=A.find(".videos");D.removeAttr("href");D.removeClass("inactive");B.attr("href","javascript:switchGalleryTab('images');");B.addClass("inactive");E.find(".back a").attr("href","javascript:previousVideo(1);");E.find(".next a").attr("href","javascript:nextVideo(1);");$(window).unbind("keypress",imageKeyPressEvent);$(window).bind("keypress",videoKeyPressEvent);updateGalleryVideos()}function updateGalleryImages(){var H=$("#gallery .content");var D=H.find(".thumbnails");var B=D.find(".back a");var F=D.find(".next a");var C;var E;var A;var G;if(currentGalleryImage>1){D.find(".predecessor2 a").attr("href","javascript:previousImage(2);");C=galleryImages[currentGalleryImage-2].thumbnail}else{D.find(".predecessor2 a").removeAttr("href");C="images/default/1pxt.gif"}if(currentGalleryImage>0){B.css(cssVisible);D.find(".predecessor1 a").attr("href","javascript:previousImage(1);");E=galleryImages[currentGalleryImage-1].thumbnail}else{B.css(cssHidden);D.find(".predecessor1 a").removeAttr("href");E="images/default/1pxt.gif"}if(currentGalleryImage+1<galleryImages.length){F.css(cssVisible);D.find(".successor1 a").attr("href","javascript:nextImage(1);");A=galleryImages[currentGalleryImage+1].thumbnail}else{F.css(cssHidden);D.find(".successor1 a").removeAttr("href");A="images/default/1pxt.gif"}if(currentGalleryImage+2<galleryImages.length){D.find(".successor2 a").attr("href","javascript:nextImage(2);");G=galleryImages[currentGalleryImage+2].thumbnail}else{D.find(".successor2 a").removeAttr("href");G="images/default/1pxt.gif"}H.find(".stage").empty().appendDom([{tagName:"img",src:"images/default/1pxt.gif",alt:""}]);var I=H.find(".stage img");if(isIE6()){I.bind("load",function(){var J=new Image();J.src=galleryImages[currentGalleryImage].source;updateImageDimensions(I,J)})}I.attr("src",galleryImages[currentGalleryImage].source);D.find(".predecessor2 img").attr("src",C);D.find(".predecessor1 img").attr("src",E);D.find(".current img").attr("src",galleryImages[currentGalleryImage].thumbnail);D.find(".successor1 img").attr("src",A);D.find(".successor2 img").attr("src",G);D.find(".counter").text((currentGalleryImage+1)+" / "+(galleryImages.length))}function updateGalleryVideos(){var K=$("#gallery .content");var D=K.find(".thumbnails");var B=D.find(".back a");var I=D.find(".next a");var C;var F;var A;var J;if(currentGalleryVideo>1){D.find(".predecessor2 a").attr("href","javascript:previousVideo(2);");C=galleryVideos[currentGalleryVideo-2].thumbnail}else{D.find(".predecessor2 a").removeAttr("href");C="images/default/1pxt.gif"}if(currentGalleryVideo>0){B.css(cssVisible);D.find(".predecessor1 a").attr("href","javascript:previousVideo(1);");F=galleryVideos[currentGalleryVideo-1].thumbnail}else{B.css(cssHidden);D.find(".predecessor1 a").removeAttr("href");F="images/default/1pxt.gif"}if(currentGalleryVideo+1<galleryVideos.length){I.css(cssVisible);D.find(".successor1 a").attr("href","javascript:nextVideo(1);");A=galleryVideos[currentGalleryVideo+1].thumbnail}else{I.css(cssHidden);D.find(".successor1 a").removeAttr("href");A="images/default/1pxt.gif"}if(currentGalleryVideo+2<galleryVideos.length){D.find(".successor2 a").attr("href","javascript:nextVideo(2);");J=galleryVideos[currentGalleryVideo+2].thumbnail}else{D.find(".successor2 a").removeAttr("href");J="images/default/1pxt.gif"}var H=galleryVideos[currentGalleryVideo].video.embed;var E=galleryVideos[currentGalleryVideo].video.object;var G=K.find(".stage");G.empty();G.append('<object classid="'+E.classID+'" codebase="'+E.codebase+'"><param name="movie" value="'+H.src+'"><embed src="'+H.src+'" type="'+H.type+'" pluginspage="'+H.pluginspage+'" /></object>');G.flash({id:"galleryFlash",src:H.src,type:H.type,pluginspage:H.pluginspage},{expressInstall:false,update:false},function(L){$(this).empty().prepend($.fn.flash.transform(L))});D.find(".predecessor2 img").attr("src",C);D.find(".predecessor1 img").attr("src",F);D.find(".current img").attr("src",galleryVideos[currentGalleryVideo].thumbnail);D.find(".successor1 img").attr("src",A);D.find(".successor2 img").attr("src",J);D.find(".counter").text((currentGalleryVideo+1)+" / "+(galleryVideos.length))}function nextImage(A){if(currentGalleryImage<galleryImages.length-1){currentGalleryImage+=A;updateGalleryImages()}}function previousImage(A){if(currentGalleryImage>0){currentGalleryImage-=A;updateGalleryImages()}}function nextVideo(A){if(currentGalleryVideo<galleryVideos.length-1){currentGalleryVideo+=A;updateGalleryVideos()}}function previousVideo(A){if(currentGalleryVideo>0){currentGalleryVideo-=A;updateGalleryVideos()}}function switchGalleryTab(A){if(A=="videos"){initGalleryVideos()}else{initGalleryImages()}}function closeGallery(){closeDialog("gallery",repositionGallery,galleryEscapeCallback);$(window).unbind("keypress",imageKeyPressEvent);$(window).unbind("keypress",videoKeyPressEvent)}function repositionGallery(){repositionDialog($("#gallery"),$("#galleryDisabled"),$(".root"),{top:15,right:16,bottom:15,left:16},true)}function galleryEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeGallery)&&A=="gallery"){functionLookup.closeGallery();return false}return true}function switchImageSrc(D,A){if(D.attr("src")!=A){D.unbind("load");D.unbind("error");var F=new Image();F.src=A;if(!F.complete){var C=$("#imageWait");if(C.length<1){$("body").appendDom([createTooltip("imageWait",[{tagName:"img",src:"images/default/wait.gif",alt:""}])]);C=$("#imageWait")}var B=D.parent();var E=B.offset();C.pngFix();C.css({top:E.top+B.height()/2-C.height()/2,left:E.left+B.width()/2-C.width()/2});C.find(".centerImage").css({width:32,height:32});D.bind("load",function(){$("#imageWait").remove();D.unbind("load");updateImageDimensions(D,F);D.parent().pngFix()()});D.bind("error",function(){$("#imageWait").remove()});D.attr("src",A)}else{D.attr("src",A);updateImageDimensions(D,F);D.parent().pngFix()()}}}function updateImageDimensions(B,A){if($.browser.msie){B.css({width:A.width,height:A.height})}}function newConfiguration(A){var C=$("#imagearea #sum .newConfigurationTemplate");var B=[];B.push({tagName:"div",className:"headline",innerHTML:C.find(".headline").text()});B.push({tagName:"div",className:"text",innerHTML:C.find(".text").text()});B.push({tagName:"div",className:"ok",childNodes:[createLink("javascript:redirect('"+A+"');",C.find(".ok").text()),createClearDiv()]});B.push({tagName:"div",className:"cancel",childNodes:[createLink("javascript:closeNewConfiguration();",C.find(".cancel").text()),createClearDiv()]});openDialog("newConfiguration",B,repositionNewConfiguration)}function repositionNewConfiguration(){repositionDialog($("#newConfiguration"),$("#newConfigurationDisabled"),$(".root"),{top:175,right:275,bottom:405,left:275},true)}function closeNewConfiguration(){closeDialog("newConfiguration",repositionNewConfiguration,null)}function redirect(A){location.href=A}function repositionGenerateBookmark(){repositionDialog($("#generateBookmark"),$("#generateBookmarkDisabled"),$(".root"),{top:200,right:200,bottom:305,left:200},true)}function generateBookmarkEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeGenerateBookmark)&&A=="generateBookmark"){functionLookup.closeGenerateBookmark();return false}return true}function closeGenerateBookmark(){closeDialog("generateBookmark",repositionGenerateBookmark,null)}var bookmarkGenerationUpdate=function(B){var A=[createCloseButton(B.close,"closeGenerateBookmark"),{tagName:"div",className:"headline",innerHTML:B.headline},{tagName:"div",className:"text",innerHTML:B.text},{tagName:"label",f0r:"bookmarkText",innerHTML:B.titleLabel},{tagName:"input",id:"bookmarkText",name:"bookmarkText",type:"text",valu3:B.title},{tagName:"label",f0r:"bookmarkLink",innerHTML:B.linkLabel},{tagName:"input",id:"bookmarkLink",name:"bookmarkLink",type:"text",valu3:B.link}];if(window.sidebar||document.all){A.push({tagName:"div",className:"add",childNodes:[{tagName:"div",className:"wbg fl",childNodes:[{tagName:"div",className:"link",childNodes:[{tagName:"a",href:"javascript:addBookmark();",innerHTML:B.add}]}]}]})}openDialog("generateBookmark",A,repositionGenerateBookmark,generateBookmarkEscapeCallback,true);$("#generateBookmark #bookmarkLink").select()};function addBookmark(){var B=getTextInputValue($("#generateBookmark"),"bookmarkText");var A=getTextInputValue($("#generateBookmark"),"bookmarkLink");if(window.sidebar){window.sidebar.addPanel(B,A,"")}else{if(document.all){window.external.AddFavorite(A,B)}}closeGenerateBookmark()}function showDimensions(){var O=$("#fullscreen");var F=$(".content",O);var H=$(".fs .ext:first",F);var J=$(".fs .int:first",F);var E=$(".fs .dim:first",F);var B=$(".fs .cockpit:first",F);var K=$(".bar",F);var L=$(".ext",K);var G=$(".ext img",K);var A=$(".int",K);var N=$(".int img",K);var D=$(".dim",K);var C=$(".dim img",K);var M=$(".cockpit",K);var I=$(".cockpit img",K);$("#acc-zoom-menu-sideview").hide();$("#acc-zoom-menu-cockpitview").hide();highlight(D);dehighlight(A,switchToInterior);dehighlight(L,switchToExterior);dehighlight(M,switchToCockpit);B.hide();H.hide();J.hide();E.show();C.attr("src","images/default/button_ext_off.gif");G.attr("src","images/default/button_ext_on.gif");N.attr("src","images/default/button_int_on.gif");I.attr("src","images/default/button_coc_on.gif");E.find(".container").jScrollPane()}function toggleInteriorFilter(A){showWait();dwrInteriorService.toggleFilter(A,processDWRResult)}function resetInteriorFilter(){showWait();dwrInteriorService.resetFilter(processDWRResult)}function tileSectionInfo(A){showWait();dwrInteriorService.tileSectionInfo(A,processDWRResult)}var interiorUpdate=function(A){var E=$("#interior #content");var G=$("#left",E);var D=$("#right",E);var B=$(".matrix",D);updateCompleteFilterGroup(A.filterGroups,"fg",$(".filter",G));updateTileSections(A.partSections,"i",B);var F=$(".current",D)[0];if(F){F.innerHTML=A.currentTileText}$(".shown",D).text(A.shownTiles);$(".total",D).text(A.totalTiles);var C=D.find(".price")[0];if(C){C.innerHTML=formatPricesFallback(A.currentPriceOne,A.currentPriceTwo)}updateHeight(D,$(".container",B),B,["headline","current","price"],mainContentHeight);$(".container",E).jScrollPane()};var partTextLookup={};function startConflict(){showWait();dwrProductService.startConflict(processDWRResult)}function cancelConflict(){tracking.solvedConflict();partTextLookup={};showWait();dwrProductService.cancelConflict(processDWRResult)}function addPart(A){showWait();dwrProductService.addPart(A,processDWRResult)}function addWheel(A){showWait();dwrProductService.addWheel(A,processDWRResult)}function addSolutionPart(A){tracking.solvedConflict(A,partTextLookup[A]);partTextLookup={};showWait();dwrProductService.addSolutionPart(A,processDWRResult)}function removePart(A){showWait();dwrProductService.removePart(A,processDWRResult)}function removeSolutionPart(A){tracking.solvedConflict(A,partTextLookup[A]);partTextLookup={};showWait();dwrProductService.removeSolutionPart(A,processDWRResult)}function partInfo(A){showWait();dwrProductService.partInfo(A,processDWRResult)}function changedParts(){showWait();dwrProductService.changedParts(processDWRResult)}function generateTeaserLink(){showWait();dwrProductService.generateTeaserLink(processDWRResult)}var partInfoUpdate=function(F){var D=[];D.push(createCloseButton(F.close,"closePartInfo"));D.push(createClearDiv());D.push({tagName:"div",className:"headline",innerHTML:F.headline});var E=[];if(F.imageURL){E.push({tagName:"img",src:F.imageURL,alt:""})}E.push({tagName:"div",className:"description",innerHTML:F.description});if(F.packageContents.length>0){var C=[];for(var B=0;B<F.packageContents.length;B++){C.push({tagName:"div",innerHTML:F.packageContents[B]})}E.push({tagName:"div",className:"package",childNodes:C})}E.push({tagName:"div",className:"hint",innerHTML:F.hint});var A={tagName:"div",className:"cont",childNodes:[{tagName:"div",className:"container",childNodes:E}]};D.push(A);openDialog("partInfo",D,repositionPartInfo,partInfoEscapeCallback,true);$("#partInfo .container").jScrollPane()};function repositionPartInfo(){repositionDialog($("#partInfo"),$("#partInfoDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closePartInfo(){closeDialog("partInfo",repositionPartInfo,partInfoEscapeCallback)}function partInfoEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closePartInfo)&&A=="partInfo"){functionLookup.closePartInfo();return false}return true}function changedPartsUpdate(C){var A=[];if(C.removedParts.length>0){var B=[];for(var F=0;F<C.removedParts.length;F++){B.push({tagName:"li",innerHTML:C.removedParts[F]})}A.push({tagName:"div",className:"headline",innerHTML:C.removedHeadline});A.push({tagName:"ul",className:"removed",childNodes:B})}if(C.addedParts.length>0){var E=[];for(var D=0;D<C.addedParts.length;D++){E.push({tagName:"li",innerHTML:C.addedParts[D]})}A.push({tagName:"div",className:"headline",innerHTML:C.addedHeadline});A.push({tagName:"ul",className:"added",childNodes:E})}var G=[createCloseButton(C.close,"closeChangedParts"),createClearDiv(),{tagName:"div",className:"items",childNodes:A},{tagName:"div",className:"foot",childNodes:[createLink(C.restartURL,C.restartText)]}];openDialog("changedParts",G,repositionChangedParts,changedPartsEscapeCallback,true);$("#changedParts .container").jScrollPane()}function repositionChangedParts(){repositionDialog($("#changedParts"),$("#changedPartsDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closeChangedParts(){closeDialog("changedParts",repositionChangedParts,changedPartsEscapeCallback)}function changedPartsEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeChangedParts)&&A=="changedParts"){functionLookup.closeChangedParts();return false}return true}var conflictOpen=false;var conflictUpdate=function(D){partTextLookup={};if(D.conflict){tracking.startConflict();var F=[];if(D.closeable){F.push(createCloseButton(D.cancel,"cancelConflict","cclose"))}var A=[];processConflictResults(D.addResults,"addSolutionPart",D.addHeadline,A,D.priceOneText,D.priceTwoText,D.hasPrices,D.hasImage);processConflictResults(D.removeResults,"removeSolutionPart",D.removeHeadline,A,D.priceOneText,D.priceTwoText,D.hasPrices,D.hasImage);F.push({tagName:"div",className:"header",childNodes:[{tagName:"div",className:"left",innerHTML:"&nbsp;"},{tagName:"div",className:"right",childNodes:[{tagName:"div",className:"head",innerHTML:D.headline},{tagName:"div",className:"desc",innerHTML:D.description}]},createClearDiv()]},{tagName:"div",className:"conf",childNodes:[{tagName:"div",className:"container",childNodes:A}]});openDialog("conflict",F,repositionConflict,conflictEscapeCallback,D.closeable);conflictOpen=true;var E=$("#conflict");var C=$(".content",E);var B=$(".container",E);if(isIE6()){C.height(E.height()-getFullHeight(E.find(".header")))}B.jScrollPane();updateHeight(C,B,$(".conf",C),["header"],C.height());B.jScrollPane()}else{if(conflictOpen){closeDialog("conflict",repositionConflict,conflictEscapeCallback);conflictOpen=false}}};function processConflictResults(C,A,B,E,G,F,H,D){if(C.length>0){E.push({tagName:"div",className:"title",innerHTML:B});$.each(C,function(){$.each(this.items,function(){partTextLookup[this.partId]=this.text;var I=[];I.push({tagName:"div",className:"spacer",innerHTML:"&nbsp"});I.push({tagName:"div",className:"icon",childNodes:[{tagName:"a",href:"javascript:"+A+"('"+this.partId+"');",childNodes:[{tagName:"img",src:"images/default/radio_default.gif",alt:""}]}]});var L=[];if(this.hasInfo){L.push({tagName:"a",className:"info",href:"javascript:partInfo('"+this.partId+"');",childNodes:[{tagName:"img",src:"images/default/button_info.gif",alt:""}]})}L.push({tagName:"a",href:"javascript:"+A+"('"+this.partId+"');",innerHTML:this.text});var M;if(H&&D){M="tiny"}else{if(H&&!D||!H&&D){M="small"}else{M="big"}}I.push({tagName:"div",className:"main "+M,childNodes:L});if(D){var J=[];if(this.imageURL){J.push({tagName:"img",src:this.imageURL,alt:""})}I.push({tagName:"div",className:"thumb",childNodes:J})}if(H){var K=[];if(this.priceOne){K.push({tagName:"div",className:"price",title:G,innerHTML:this.priceOne})}if(this.priceTwo){K.push({tagName:"div",className:"price",title:F,innerHTML:this.priceTwo})}I.push({tagName:"div",className:"prices",childNodes:K})}I.push({tagName:"div",className:"spacer",innerHTML:"&nbsp"});E.push({tagName:"div",className:"wbg part",childNodes:I})})})}}function repositionConflict(){repositionDialog($("#conflict"),$("#conflictDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function conflictEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.cancelConflict)&&A=="conflict"){functionLookup.cancelConflict();return false}return true}function teaserLinkGenerationUpdate(C){var B=[];B.push(createCloseButton(C.close,"closeTeaserLinkGeneration","tlgclose"));B.push({tagName:"div",className:"headline",innerHTML:C.headline});B.push({tagName:"div",className:"text",innerHTML:C.text});B.push({tagName:"div",className:"url",childNodes:[{tagName:"input",type:"text",value:C.link}]});openDialog("teaserLinkGeneration",B,repositionTeaserLinkGeneration,teaserLinkGenerationEscapeCallback,true);var A=$("#teaserLinkGeneration input");A.focus();A.select()}function repositionTeaserLinkGeneration(){repositionDialog($("#teaserLinkGeneration"),$("#teaserLinkGenerationDisabled"),$(".root"),{top:175,right:100,bottom:400,left:100},true)}function teaserLinkGenerationEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeTeaserLinkGeneration)&&A=="teaserLinkGeneration"){functionLookup.closeTeaserLinkGeneration();return false}return true}function closeTeaserLinkGeneration(){closeDialog("teaserLinkGeneration",repositionTeaserLinkGeneration,teaserLinkGenerationEscapeCallback)}var dwrCallback=function(C){var D="resultProcessor";registerElement(D);if(C.success){var B=C.updateBeans;$.each(B,function(H){var E=B[H];var G=E.beanName;var F=viewUpdateBeanLookup[G];if($.isFunction(F)){F(E)}else{alert("Error: Missing updateFunction for beanname '"+G+"'")}})}else{var A=C.message;if(A==null){A="AJAX Operation failed"}alert("Error: "+A)}finishedLoading(D);hideWait()};var processDWRResult={callback:dwrCallback,parameters:{msk:conleos_msk}};var processDWRResultConfigurationIndependend={callback:dwrCallback,parameters:{msk:conleos_msk,CONFIGURATION_INDEPENDENT:"CONFIGURATION_INDEPENDENT"}};function sendMail(){showWait();var H=$("#mailDialog .content");var N=getTextInputValue(H,"mailFrom");var C=getTextInputValue(H,"mailTo");var G=getTextInputValue(H,"mailSubject");var I=getTextareaValue(H,"mailMessage");var M=toBoolean(getRadioButtonState(H,"mailCopy"));var O=toBoolean(getRadioButtonState(H,"mailPdf"));var K=getCheckboxState(H,"printSpecialMail");var U=getCheckboxState(H,"specialDetailsMail");var T=getCheckboxState(H,"specialPicsMail");var Q=getCheckboxState(H,"printDefaultMail");var L=getCheckboxState(H,"standardDetailsMail");var B=getCheckboxState(H,"standardPicsMail");var R=getCheckboxState(H,"printTechMail");var S=getCheckboxState(H,"smallExteriorMail");var F=getCheckboxState(H,"bigExteriorMail");var D=getCheckboxState(H,"smallInteriorMail");var P=getCheckboxState(H,"bigInteriorMail");var A=window.location.href;var J=getCheckboxState(H,"1EnableMail")?getRadioButtonState(H,"1OptionsMail"):"NONE";var E=getCheckboxState(H,"2EnableMail")?getRadioButtonState(H,"2OptionsMail"):"NONE";dwrSummaryService.sendEmail(N,C,G,I,M,O,J,E,K,U,T,Q,L,B,R,D,P,S,F,A,processDWRResult)}function contactDealer(){showWait();var K=$("#dealerDialog .content");var N=getComboboxValue(K,"dealerName");var D=getComboboxValue(K,"dealerClientTitle");var L=getTextInputValue(K,"dealerClientFirstname");var M=getTextInputValue(K,"dealerClientLastname");var C=getTextInputValue(K,"dealerClientStreet");var E=getTextInputValue(K,"dealerClientStreetNumber");var F=getTextInputValue(K,"dealerClientPostcode");var J=getTextInputValue(K,"dealerClientLocation");var H=getTextInputValue(K,"dealerClientPhone");var I=getTextInputValue(K,"dealerClientMail");var O=getTextareaValue(K,"dealerMessage");var G=getRadioButtonState(K,"dealerContact");var B=toBoolean(getRadioButtonState(K,"dealerDataProtection"));var A=window.location.href;dwrSummaryService.contactDealer(N,D,L,M,C,E,F,J,H,I,G,O,B,A,processDWRResult)}var mailDialogUpdate=function(A){updateSummaryDialog(A,closeMailDialog,mailDialogBack,"mailDialog")};var dealerDialogUpdate=function(A){updateSummaryDialog(A,closeDealerDialog,dealerBack,"dealerDialog")};function updateSummaryDialog(E,G,F,A){if(E.success){G();openError(E.headline,E.message,E.close);if(A=="dealerDialog"){logActionEnded("dealersearch")}else{if(A=="mailDialog"){logActionEnded("mail")}}}else{var D=$("#"+A+" .content");if(E.goBack){F()}for(var C=0;C<E.invalidNames.length;C++){D.find("input[type=text][name="+E.invalidNames[C]+"]").addClass("invalid");D.find("textarea[name="+E.invalidNames[C]+"]").addClass("invalid")}for(var B=0;B<E.validNames.length;B++){D.find("input[type=text][name="+E.validNames[B]+"]").removeClass("invalid");D.find("textarea[name="+E.validNames[B]+"]").removeClass("invalid")}}}function getCheckboxState(B,A){var C=false;B.find("input[type=checkbox][name="+A+"]").each(function(){C=this.checked});return C}function getRadioButtonState(C,A){var B;C.find("input[type=radio][name="+A+"]").each(function(){if(this.checked){B=$(this).attr("value")}});return B}function toBoolean(A){return A=="true"}function getTextInputValue(B,A){var C;B.find("input[type=text][name="+A+"]").each(function(){C=$(this).attr("value")});return C}function getComboboxValue(B,A){return B.find("select[name="+A+"]").selectedValues()[0]}function getTextareaValue(B,A){var C;B.find("textarea[name="+A+"]").each(function(){C=$(this).attr("value")});return C}var fp=[[],[{x:50,y:50}],[{x:25,y:50},{x:75,y:50}],[{x:50,y:35},{x:25,y:70},{x:75,y:70}],[{x:25,y:35},{x:75,y:35},{x:25,y:70},{x:75,y:70}],[{x:50,y:25},{x:19,y:57},{x:81,y:57},{x:32,y:90},{x:68,y:90}],[{x:32,y:25},{x:68,y:25},{x:19,y:57},{x:81,y:57},{x:32,y:90},{x:68,y:90}],[{x:32,y:25},{x:68,y:25},{x:15,y:57},{x:50,y:57},{x:85,y:57},{x:32,y:90},{x:68,y:90}],[{x:32,y:25},{x:68,y:25},{x:15,y:57},{x:50,y:57},{x:85,y:57},{x:15,y:90},{x:50,y:90},{x:85,y:90}],[{x:15,y:25},{x:50,y:25},{x:85,y:25},{x:15,y:57},{x:50,y:57},{x:85,y:57},{x:15,y:90},{x:50,y:90},{x:85,y:90}],[{x:20,y:23},{x:50,y:23},{x:80,y:23},{x:10,y:55},{x:36,y:55},{x:64,y:55},{x:90,y:55},{x:20,y:87},{x:50,y:87},{x:80,y:87}],[{x:20,y:23},{x:50,y:23},{x:80,y:23},{x:10,y:55},{x:36,y:55},{x:64,y:55},{x:90,y:55},{x:10,y:87},{x:36,y:87},{x:64,y:87},{x:90,y:87}],[{x:10,y:23},{x:36,y:23},{x:64,y:23},{x:90,y:23},{x:10,y:55},{x:36,y:55},{x:64,y:55},{x:90,y:55},{x:10,y:87},{x:36,y:87},{x:64,y:87},{x:90,y:87}]];var tw=1000;var th=410;var pt=15;var pl=20;var pr=20;var pb=25;var rw=(tw-pl-pr)/100;var rh=(th-pt-pb)/100;var fleetAnimationSpeed=750;function updateFleet(C){var D=pl;var B=jQuery.makeArray($("#carlines #header #fleet .car"));var A=B.length;if(fp.length>A){jQuery.each(B,function(H){var G=$(this);var E=D+(fp[A][H].x*rw)-(G.width()/2);var F=pt+(fp[A][H].y*rh)-(G.height()/2);G.css({left:E+"px",top:F+"px"});if(C&&C.fade){if(isIE6()){G.show();G.children().each(function(){var I=$(this);if((this.tagName.toLowerCase()=="span"||this.tagName.toLowerCase()=="div")&&!I.hasClass("thumb")&&!I.hasClass("listener")){I.show()}})}else{if($.browser.msie){if(G.hasClass("big")){G.css({zIndex:1})}jQuery.each(G.children(),function(){var L=$(this);if(L.hasClass("thumb")||L.hasClass("name")){var K=parseFloat(L.parent().css("top"));var I=parseFloat(L.parent().css("left"));if(L.hasClass("thumb")&&G.hasClass("small")){K+=20;I+=40}var M=I+"px";var J=K+"px";L.css({backgroundImage:"url(' images/default/bg.jpg ')",backgroundPosition:"-"+M+" -"+J})}})}G.fadeIn({speed:fleetAnimationSpeed,queue:"q",callback:function(){if($.browser.msie){jQuery.each(G.children(),function(){var I=$(this);if(I.hasClass("thumb")){I.css({backgroundImage:"url( 'images/default/1pxt.gif' )"})}if(G.hasClass("big")){G.css({zIndex:2})}})}jQuery.each(G.children(),function(){var I=$(this);if(!I.hasClass("thumb")&&!I.hasClass("listener")){I.fadeIn({speed:fleetAnimationSpeed,callback:function(){if($.browser.msie){jQuery.each(G.children(),function(){var J=$(this);if(J.hasClass("name")){J.css({backgroundImage:"url( 'images/default/1pxt.gif' )"});if(G.hasClass("small")){G.css({zIndex:2})}}})}}})}})}})}}});$("#carlines #header #fleet .car .listener").hoverIntent({sensitivity:10,interval:50,over:function(){var O=$("#tooltip");var E=$(this);var M=E.outerWidth()-30;var I=E.outerHeight();O.find(".content").empty().append(E.children().clone());var K=E.offset().top-10;var G=E.offset().left+15;O.css({width:M+"px",height:I+"px",top:K+"px",left:G+"px",display:"block"});$("#trigger a").attr("href",$("#tooltip .content .data .foot a").attr("href"));var L=10;var F=$("#tooltip .topCenter").innerHeight();var H=$("#tooltip .rightCenter").innerWidth();var N=$("#tooltip .bottomCenter").innerHeight();var J=$("#tooltip .leftCenter").innerWidth();$("#trigger").css({top:K-F-L+"px",left:G-J-L+"px",width:M+J+H+2*L+"px",height:I+F+N+2*L+"px",display:"block"})},timeout:0,out:function(){}})}}function hideFleetTooltip(){$("#trigger").css({display:"none"});$("#trigger a").removeAttr("href");$("#tooltip").hide()}$(function(){$("#trigger").hover(function(){},function(){hideFleetTooltip()});updateFleet({fade:true})});$(window).bind("resize",function(){updateFleet()});(function(A){A.fn.replaceCombobox=function(J){var E=[];J=jQuery.extend({className:"jquery-combobox",scrollContainerClassName:"container",maxHeight:150,zIndex:500,callback:function(){return[]}},J||{});var F=J.zIndex;var G=["jScrollPaneTrack","jScrollPaneDrag","jScrollPaneDragTop","jScrollPaneDragBottom","jScrollArrowUp","jScrollArrowDown",J.className+"-item"];var D=function(M,L){var K=false;A.each(L,function(){if(M.hasClass(this)){K=true}});return K};var I=function(){if(E&&E.length>0){B()}var Q=A(this);var P=Q.parent();var M=P.find("."+J.className+"-values");var N=P.find(".jScrollPaneContainer");var L=N.find("."+J.scrollContainerClassName);var K=0;var O=Q.outerWidth();Q.addClass(J.className+"-open");Q.unbind("click");N.width(O);L.width(O);M.width(O);N.height(J.maxHeight);L.height(J.maxHeight);M.height(J.maxHeight);M.show();M.find("."+J.className+"-item").each(function(){var R=A(this);R.bind("click",H);K+=R.height()});if(K>J.maxHeight){K=J.maxHeight}N.height(K);L.height(K);M.height(K);L.jScrollPane();L.jScrollPane();Q.bind("click",B);E=Q;return false};var B=function(M){if(E&&E.length>0&&!(M&&M.target&&D(A(M.target),G))){var L=E.parent();var K=L.find("."+J.className+"-values");E.unbind("click");E.removeClass(J.className+"-open");K.hide();E.bind("click",I);E=[];return false}return true};var H=function(){var N=A(this);if(N.hasClass(J.className+"-item")){var L=N.attr("key");var O=N.parents("."+J.className+"-box:first");var K=O.find("select");var P=O.find("."+J.className+"-current div");var M=K.find("option[value="+L+"]");K.selectOptions(M.attr("value"));P.text(M.text());B();C(J.callback(N,J))}};var C=function(L){if(L.length>0){var K=L.find("."+J.scrollContainerClassName);K.empty();L.find("option").each(function(){var M=A(this);K.append('<div key="'+M.attr("value")+'" class="'+J.className+'-item">'+M.text()+"</div>")});K.find("."+J.className+"-item").each(function(){A(this).bind("click",H)});L.find("."+J.className+"-current div").text(L.find("option:selected").text())}};A("html").bind("click",B);return this.each(function(){var L=A(this);L.hide();L.wrapAll('<div class="'+J.className+'-box" style="position: relative;"></div>');var N=L.parent();N.css({zIndex:F--});N.prepend('<div class="'+J.className+'-values" style="position: absolute;"></div>');N.prepend('<div class="'+J.className+'-current"></div>');var K=N.find("."+J.className+"-current");var M=N.find("."+J.className+"-values");K.append("<div></div>");M.append('<div class="'+J.scrollContainerClassName+'"></div>');M.find("."+J.scrollContainerClassName).jScrollPane();C(N);M.hide();K.bind("click",I)})}})(jQuery);var cssHidden={display:"none"};var cssVisible={display:""};var mainContentHeight=309;var destMotionPosition=null;var tiMimeTypeSuffix=isIE6()?"gif":"png";function updateMotion(){var A=$("#motion");if(A.length>0&&destMotionPosition&&destMotionPosition.length>0){A.removeClass("hidden");A.css({top:destMotionPosition.offset().top+"px",left:destMotionPosition.offset().left+"px",width:destMotionPosition.outerWidth()+"px",height:destMotionPosition.outerHeight()+"px",display:"block"})}}function animateMotion(){if(destMotionPosition&&destMotionPosition.length>0){var A={top:destMotionPosition.offset().top,left:destMotionPosition.offset().left,width:destMotionPosition.width(),height:destMotionPosition.height()};$("#motion").animate(A,750,null,"","","","",0,false)}}function updateMotionBean(B,A){if(A){destMotionPosition=$("#"+A.position,B);animateMotion()}}var dialogs=[];function openDialog(A,H,D,E,B){var I=$("#"+A);if(I.length<1){dialogs.push(A);$("body").appendDom([{tagName:"div",className:"disabled hidden",id:A+"Disabled",innerHTML:"&nbsp"},{tagName:"div",className:"window hidden",id:A,childNodes:[{tagName:"div",className:"topLeft",innerHTML:"&nbsp"},{tagName:"div",className:"topCenter",innerHTML:"&nbsp"},{tagName:"div",className:"topRight",innerHTML:"&nbsp"},{tagName:"div",className:"leftCenter",childNodes:[{tagName:"img",className:"leftImage",src:"images/default/motion_left.png",alt:""}]},{tagName:"div",className:"rightCenter",childNodes:[{tagName:"img",className:"rightImage",src:"images/default/motion_right.png",alt:""}]},{tagName:"div",className:"bottomLeft",innerHTML:"&nbsp"},{tagName:"div",className:"bottomCenter",innerHTML:"&nbsp"},{tagName:"div",className:"bottomRight",innerHTML:"&nbsp"},{tagName:"img",className:"centerImage",src:"images/default/motion_center.jpg",alt:""},{tagName:"div",className:"content",childNodes:H}]}]);I=$("#"+A)}else{I.find(".content").empty().appendDom(H)}var F=$("#"+A+"Disabled");var C=$("#menu");var J=$("#footer");var G=$(window);F.css({zIndex:(500+dialogs.length)});I.css({zIndex:(500+(2*dialogs.length))});G.bind("resize scroll",D);D();if(B){$("html").bind("keypress",E)}I.pngFix();C.hide();J.hide();F.removeClass("hidden");I.removeClass("hidden");I.show();F.show()}function repositionDialog(A,B,D,F,C){var E=F.bottom;if(isIE6()){E-=5}B.css({width:$(window).width(),height:$(window).height(),top:window.scrollY,left:window.scrollX});A.css({width:D.outerWidth()-F.left-F.right,height:D.outerHeight()-F.top-E,top:D.offset().top+F.top,left:D.offset().left+F.left});if(C){repositionDialog(A,B,D,F,false)}}function closeDialog(G,F,D){dialogs.pop();var E=$(window);var B=$("#"+G);var C=$("#"+G+"Disabled");var A=$("html");E.unbind("resize scroll",F);A.unbind("keypress",D);B.remove();C.remove();$("#menu").show();$("#footer").show();updateMotion()}function createCloseButton(D,C,A){var B="close";if(A){B+=" "+A}return{tagName:"div",className:B,childNodes:[{tagName:"div",className:"wbg",childNodes:[{tagName:"a",href:"javascript:functionLookup['"+C+"']();",innerHTML:D,childNodes:[{tagName:"img",src:"images/default/button_close.gif",alt:""}]}]}]}}function createClearDiv(){return{tagName:"div",className:"clear",innerHTML:"&nbsp;"}}function createLink(B,D,A){var C;if(B){C={tagName:"a",href:B,className:A,innerHTML:D}}else{C={tagName:"a",className:A,innerHTML:D}}return{tagName:"div",className:"wbg fl",childNodes:[{tagName:"div",className:"link",childNodes:[C]}]}}var langOpen=false;function toggleLanguages(){var I=25;var G=10;var D=10;var C=$("#menu");var J=$("#language",C);var O=$("a",J);var H=$("#languages",C);var L=$(".cont",H);var B=O.attr("href");var F=100;var E=J.position().left-3-G;var N=I-5;var M=J.position().top-N+J.height()+3;O.removeAttr("href");if(langOpen){L.fadeOut(F,function(){H.animate({top:M,left:E,height:N},F,function(){H.fadeOut(F,function(){O.attr("href",B)})},null,null,null,0,false)});$(window).unbind("click",toggleLanguages);langOpen=false}else{L.show();H.toggle();H.css({visibility:"hidden"});var P=0;var Q=0;L.children().each(function(){var S=$(this);P+=getFullHeight(S);var R=getFullWidth(S);if(R>Q&&!S.hasClass("clear")){Q=R}});P+=I;L.css(cssHidden);var A=J.outerWidth();if(A>Q){Q=A}Q+=G+D;var K={height:N,width:Q};L.css(K);H.css(K);H.hide();H.css({visibility:"visible"});H.css({top:M,left:E});H.fadeIn(F,function(){H.animate({height:P,top:J.position().top-P+J.height()+3},F,function(){L.fadeIn(F,function(){$(window).bind("click",toggleLanguages);O.attr("href",B)})},null,null,null,null,0,false)});langOpen=true}}function getFullHeight(B){var A=0;A+=B.height();A+=parseInt(B.css("margin-top"));A+=parseInt(B.css("margin-bottom"));A+=parseInt(B.css("padding-top"));A+=parseInt(B.css("padding-bottom"));return A}function getFullWidth(B){var A=0;A+=B.width();A+=parseInt(B.css("margin-left"));A+=parseInt(B.css("margin-right"));A+=parseInt(B.css("padding-left"));A+=parseInt(B.css("padding-right"));return A}function getMaxWidth(B){var A=0;$(B).children().each(function(){if(this.tagName.toLowerCase()=="span"){A+=getFullWidth($(this))}else{var C=0;$(this).children().each(function(){C+=getFullWidth($(this))});if(C>A){A=C}}});return A}function showWait(){reinitLoadingElements();var D=$("#interceptor");var C=$("#wait");var B=$(window);var A=$(".root");C.css({top:(A.height()/2)-(C.height()/2),left:(A.width()/2)-(C.width()/2)});B.bind("resize scroll",function(){repositionInterceptorDiv(D,true)});repositionInterceptorDiv(D,true);D.removeClass("hidden");D.css(cssVisible);C.removeClass("hidden");C.css(cssVisible)}function repositionInterceptorDiv(B,A){B.css({width:$(window).width(),height:$(window).height(),top:window.scrollY,left:window.scrollX});if(A){repositionInterceptorDiv(B,false)}}function hideWait(){var B=true;for(var A in loadingElements){if(!loadingElements[A]){B=false}}if(B){$("#wait").css(cssHidden);$("#interceptor").css(cssHidden);reinitLoadingElements()}}var loadingElements={};function registerElement(A){loadingElements[A]=false}function finishedLoading(A){loadingElements[A]=true}function reinitLoadingElements(){loadingElements={}}function updateHeight(E,C,F,D,B){var A=0;E.children().each(function(){var H=$(this);if(hasClass(H,D)){A+=getFullHeight(H)}});var G=0;C.children().each(function(){G+=getFullHeight($(this))});F.height(B-A);C.parent().height(B-A)}function hasClass(C,B){var A=false;$.each(B,function(){if(C.hasClass(this)){A=true}});return A}function createTooltip(B,A){return{tagName:"div",className:"tooltip",id:B,childNodes:[{tagName:"div",className:"topLeft",innerHTML:"&nbsp"},{tagName:"div",className:"topCenter",innerHTML:"&nbsp"},{tagName:"div",className:"topRight",innerHTML:"&nbsp"},{tagName:"div",className:"leftCenter",childNodes:[{tagName:"img",className:"leftImage",src:"images/default/tooltip_left.png",alt:""}]},{tagName:"div",className:"rightCenter",childNodes:[{tagName:"img",className:"rightImage",src:"images/default/tooltip_right.png",alt:""}]},{tagName:"div",className:"bottomLeft",innerHTML:"&nbsp"},{tagName:"div",className:"bottomCenter",innerHTML:"&nbsp"},{tagName:"div",className:"bottomRight",innerHTML:"&nbsp"},{tagName:"img",className:"centerImage",src:"images/default/tooltip_center.png",alt:""},{tagName:"div",className:"content",childNodes:A}]}}function openError(A,D,C){var B=[createCloseButton(C,"closeError","eclose"),createClearDiv()];if(A){B.push({tagName:"div",className:"headline",innerHTML:A})}if(D){B.push({tagName:"div",className:"text",childNodes:[{tagName:"div",className:"container",innerHTML:D}]})}openDialog("error",B,repositionError,errorEscapeCallback,true);$("#error .container").jScrollPane()}function isIE6(){var B=(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 5.5")!=-1);var A=(navigator.appName=="Microsoft Internet Explorer"&&parseInt(navigator.appVersion)==4&&navigator.appVersion.indexOf("MSIE 6.0")!=-1);return jQuery.browser.msie&&(B||A)}function repositionError(){repositionDialog($("#error"),$("#errorDisabled"),$(".root"),{top:200,right:300,bottom:375,left:300},true)}function closeError(){closeDialog("error",repositionError,errorEscapeCallback)}function errorEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeError)&&A=="error"){functionLookup.closeError();return false}return true}function formatPricesFallback(C,A,D){var B;if(C||A){B="";if(C){B+=C}if(C&&A){B+=" / "}if(A){B+=A}}else{B=D?D:"&nbsp;"}return B}$(function(){$(".container").jScrollPane();$(document).pngFix({blankgif:"images/default/1pxt.gif"});$("a").focus(function(){$(this).blur()})});$(window).resize(function(){});function hideFocus(A){A.focus(function(){$(this).blur()})}function openExternal(D,E,A){var F="";var C="";C+=A?"height="+A+",":"height=480,";C+="left=0,";C+="location=no,";C+="menubar=no,";C+="resizable=yes,";C+="scrollbars=yes,";C+="status=no,";C+="toolbar=no,";C+="top=0,";C+=E?"width="+E:"width=640";var B=window.open(D,F,C);B.focus()}function activateEquipmentHover(A){A.hoverIntent({sensitivity:10,interval:250,over:function(){var G=A.find(".part-tt");if(G.find(".blockedby-items").children().length>1){var K=$("#tooltip");var J=K.find(".content");var B=A.offset();var F=G.children().clone();var E=$(window);var D=650;J.empty();J.append(F);K.removeClass("hidden");K.show();K.css({top:0,left:0,width:D,height:700,visibility:"hidden"});var H=0;var I=0;J.children().each(function(){var M=$(this);if(!M.hasClass("hidden")){H+=getFullHeight(M);var L=getMaxWidth(this);if(L>I){I=L}}});I+=15;var C=B.left+10;K.css({top:B.top-H-12,left:C,height:H,width:I,visibility:"visible"})}},timeout:0,out:function(){$("#tooltip").hide()}})}function openPromotion(B,C,H,G,F){var D=[];D.push(createCloseButton(G,"closePromotion"));D.push({tagName:"div",className:"dialog-headline",innerHTML:B});D.push(createClearDiv());D.push({tagName:"div",className:"headline",innerHTML:C});var E=[];if(F){E.push({tagName:"img",src:F,alt:""})}E.push({tagName:"div",className:"description",innerHTML:H});var A={tagName:"div",className:"cont",childNodes:[{tagName:"div",className:"container",childNodes:E}]};D.push(A);openDialog("promotion",D,repositionPromotion,promotionEscapeCallback,true);$("#promotion .container").jScrollPane()}function promotionEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closePromotion)&&A=="promotion"){functionLookup.closePromotion();return false}return true}function repositionPromotion(){repositionDialog($("#promotion"),$("#promotionDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closePromotion(){closeDialog("promotion",repositionPromotion,promotionEscapeCallback)}var pointerClass="pointer";var checkboxClass="checkbox";var checkboxDefaultClass="cdefault";var checkboxSelectedClass="cselected";var checkboxDisabledClass="cdisabled";var checkboxClasses=[checkboxDefaultClass,checkboxSelectedClass,checkboxDisabledClass];var radioClass="radio";var radioDefaultClass="rdefault";var radioSelectedClass="rselected";var radioDisabledClass="rdisabled";var radioClasses=[radioDefaultClass,radioSelectedClass,radioDisabledClass];var fadeTime=150;function updateCompleteFilterGroup(B,C,A){$.each(B,function(D){var E=$("#"+C+"_"+D,A);if(this.visible){E.show();$.each(this.filter,function(F){var G=$("#"+C+D+"_"+F+"_p",E);if(this.visible){G.show();$.each(this.values,function(){updateFilterValue(this,C+D)})}else{G.hide()}});$(".cont",E).each(function(H){var G=$("#"+C+D+"_"+H+"_s",E);var F=$("#"+C+D+"_"+(H+1)+"_p",E);if($(this).css("display")=="none"||(F.length>0&&F.css("display")=="none")){G.hide()}else{G.show()}})}else{E.hide()}})}function updateFilterValue(H,F,I){var A=$("#"+F+"_"+H.id+"_c",I);var D=$("#"+F+"_"+H.id+"_cl",I);var C=H.visible;var B=C?cssVisible:cssHidden;A.css(B);A.removeClass("hidden");D.css(B);D.removeClass("hidden");if(C){var E=$("#"+F+"_"+H.id+"_b",A);var G=E.parent();E.removeClass(H.checkbox?radioClass:checkboxClass);E.addClass(H.checkbox?checkboxClass:radioClass);G.unbind("click");$.each(H.checkbox?checkboxClasses:radioClasses,function(){E.removeClass(this)});if(H.deactivated){E.addClass(H.checkbox?checkboxDisabledClass:radioDisabledClass);E.removeClass(pointerClass)}else{if(H.checkbox){E.addClass(H.selected?checkboxSelectedClass:checkboxDefaultClass)}else{E.addClass(H.selected?radioSelectedClass:radioDefaultClass)}if(H.actionName){G.addClass(pointerClass);G.bind("click",function(){functionLookup[H.actionName](H.id);$(this).unbind("click")})}else{G.removeClass(pointerClass)}}}}function updateHeadlessFilter(B,C,A){$.each(B,function(){$.each(this.values,function(){updateFilterValue(this,C,A)})})}var functionLookup={};functionLookup.toggleCarlineGroup=toggleCarlineGroup;functionLookup.toggleBodyFilter=toggleBodyFilter;functionLookup.selectCarline=selectCarline;functionLookup.toggleEngineFilter=toggleEngineFilter;functionLookup.closeModelInfo=closeModelInfo;functionLookup.selectTop=selectTop;functionLookup.selectWithoutContrast=selectWithoutContrast;functionLookup.closeGallery=closeGallery;functionLookup.toggleInteriorFilter=toggleInteriorFilter;functionLookup.addPart=addPart;functionLookup.addWheel=addWheel;functionLookup.removePart=removePart;functionLookup.cancelConflict=cancelConflict;functionLookup.closePartInfo=closePartInfo;functionLookup.closeChangedParts=closeChangedParts;functionLookup.closeTeaserLinkGeneration=closeTeaserLinkGeneration;functionLookup.closeError=closeError;functionLookup.closePDFDialog=closePDFDialog;functionLookup.closeMailDialog=closeMailDialog;functionLookup.closeDealerDialog=closeDealerDialog;functionLookup.toggleFullscreen=toggleFullscreen;functionLookup.closeGenerateBookmark=closeGenerateBookmark;functionLookup.closePromotion=closePromotion;functionLookup.closeFilterValueInfoDialog=closeFilterValueInfoDialog;var viewUpdateBeanLookup={};viewUpdateBeanLookup.carlineUpdateBean=carlineUpdate;viewUpdateBeanLookup.fleetUpdateBean=fleetUpdate;viewUpdateBeanLookup.menuUpdateBean=menuUpdate;viewUpdateBeanLookup.engineUpdateBean=engineUpdate;viewUpdateBeanLookup.modelInfoUpdateBean=modelInfoUpdate;viewUpdateBeanLookup.modelComparisonUpdateBean=modelComparisonUpdate;viewUpdateBeanLookup.equipmentUpdateBean=equipmentUpdate;viewUpdateBeanLookup.exteriorUpdateBean=exteriorUpdate;viewUpdateBeanLookup.imageareaUpdateBean=imageareaUpdate;viewUpdateBeanLookup.priceInfoUpdateBean=priceInfoUpdate;viewUpdateBeanLookup.galleryUpdateBean=galleryUpdate;viewUpdateBeanLookup.interiorUpdateBean=interiorUpdate;viewUpdateBeanLookup.partInfoUpdateBean=partInfoUpdate;viewUpdateBeanLookup.conflictUpdateBean=conflictUpdate;viewUpdateBeanLookup.changedPartsUpdateBean=changedPartsUpdate;viewUpdateBeanLookup.teaserLinkGenerationUpdateBean=teaserLinkGenerationUpdate;viewUpdateBeanLookup.mailDialogUpdateBean=mailDialogUpdate;viewUpdateBeanLookup.dealerDialogUpdateBean=dealerDialogUpdate;viewUpdateBeanLookup.bookmarkGenerationUpdateBean=bookmarkGenerationUpdate;viewUpdateBeanLookup.filterValueInfoUpdateBean=filterValueInfoUpdate;var OuterView=function(){var E=[];var C="";var F=0;var G=0;var J=function(O,Q){if(Q&&Q>0){F=parseInt(Q)}for(var P=0;P<E.length;P++){M(P,O)}};var M=function(S,O){var T=I(S);var P=E[S].imageURL;var Q=E[S].isPNG;if(isIE6()&&Q){$(O).appendDom([{tagName:"div",alt:"",id:T}]);$("#"+T).css("filter",'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod="", src="'+P+'")');$("#"+T).css("width","1px");$("#"+T).css("height","1px")}else{$(O).appendDom([{tagName:"img",src:P,alt:"",id:T}])}var R=$("#"+T);if(S==F){R.show();B(R)}else{R.hide()}};var B=function(P){if(!isIE6()&&!P[0].complete){var Q=$("#image-wait");Q.show();P.bind("load",function(){P.unbind("load");P.unbind("error");$("#image-wait").hide()});P.bind("error",function(){P.unbind("load");P.unbind("error");$("#image-wait").hide()});var O=P.parent();var R=O.offset();Q.css({top:R.top+O.height()/2-Q.height()/2,left:R.left+O.width()/2-Q.width()/2})}};var K=function(){return false};var A=function(O){O=O||window.event;G++;return false};var I=function(O){return"image"+C+O};var H=function(O){$("#"+I(O)).hide()};var N=function(O){var P=$("#"+I(O));P.show();B(P)};var D=function(){H(F);F=(F+1)%E.length;N(F);dwrImageService.storeRotation(F,processDWRResultConfigurationIndependend)};var L=function(){H(F);F=(F-1)%E.length;if(F<0){F=(E.length-1)}N(F);dwrImageService.storeRotation(F,processDWRResultConfigurationIndependend)};return{initOuter:function(O){E=Array();C=O},registerImage:function(O,P){E.push({imageURL:O,isPNG:P})},cleanImages:function(O){$(O).empty();E=[]},initImages:function(O,P){$(O).empty();J(O,P)},stepLeft:function(){D()},stepRight:function(){L()}}}();var regExName=/^[\S .-]+$/;var regExPhone=/^[\d \\+()\\\/-]+$/;var regExPLZ=/^[\S\d -]+$/;var regExStreetNr=/^[\d\S ]+$/;var regExMail=/^[a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/;var dealerInputType=null;var FIRST_AND_LAST_NAME="FIRST_AND_LAST_NAME";function goTo(A,D){var C=$("#summary #content #left");var I=$(".tabs",C);var B=$(".abstract",I);var F=$(".tech",I);var E=$(".equip",I);var G=$("#abstract",C);var H=$("#tech",C);var J=$("#equip",C);if(D){G.find(".container").jScrollPane();H.find(".container").jScrollPane();J.find(".container").jScrollPane()}if(A=="abstract"){tracking.trackPage(tracking.getYourAudiPageName());B.removeAttr("href");B.removeClass("inactive");F.attr("href","javascript:goTo('tech');");F.addClass("inactive");E.attr("href","javascript:goTo('equip');");E.addClass("inactive");G.show();H.hide();J.hide();G.find(".container").jScrollPane()}else{if(A=="tech"){tracking.trackPage(tracking.getYourAudiTechnicalPageName());F.removeAttr("href");F.removeClass("inactive");B.attr("href","javascript:goTo('abstract');");B.addClass("inactive");E.attr("href","javascript:goTo('equip');");E.addClass("inactive");H.show();G.hide();J.hide();H.find(".container").jScrollPane()}else{if(A=="equip"){tracking.trackPage(tracking.getYourAudiStandardPageName());E.removeAttr("href");E.removeClass("inactive");B.attr("href","javascript:goTo('abstract');");B.addClass("inactive");F.attr("href","javascript:goTo('tech');");F.addClass("inactive");J.show();H.hide();G.hide();J.find(".container").jScrollPane()}}}}function openPDFDialog(B){logActionStarted("pdf");if(B){openDialog("pdfDialog",[],repositionPDFDialog,pdfDialogEscapeCallback,true);var A=$("#pdfDialog .content");A.append($("#summary #right #pdf .template").children().clone());A.find("input:checkbox").checkbox({empty:"images/default/1pxt.gif"});A.find("input:radio").checkbox({className:"jquery-radio",empty:"images/default/1pxt.gif"})}else{$("#summary #right #pdf form").submit()}}function repositionPDFDialog(){repositionDialog($("#pdfDialog"),$("#pdfDialogDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closePDFDialog(){var B=$("#summary #right #pdf form");var A=$("#pdfDialog .content form");updateOriginalForm(B,A);closeDialog("pdfDialog",repositionPDFDialog,pdfDialogEscapeCallback)}function pdfDialogEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closePDFDialog)&&A=="pdfDialog"){functionLookup.closePDFDialog();return false}return true}function getPDF(){closePDFDialog();logActionEnded("pdf");$("#summary #right #pdf form").submit()}function openMailDialog(D,A){logActionStarted("mail");openDialog("mailDialog",[],repositionMailDialog,mailDialogEscapeCallback,true);var C=$("#mailDialog .content");var B=$("#summary #right #mail .template");C.append(B.children().clone());B.find("textarea").each(function(){var G=$(this);var F=C.find("textarea[name="+G.attr("name")+"]");F.attr("value",G.attr("value"))});C.find("input:checkbox").checkbox({empty:"images/default/1pxt.gif"});C.find("input:radio").checkbox({className:"jquery-radio",empty:"images/default/1pxt.gif"});C.find(".mpdf").hide();C.find(".back").hide();var E=false;C.find("input[type=radio][name=mailPdf]").each(function(){var G=$(this);var F=G.parent();var H=G.attr("value");if(H=="true"){if(this.checked){E=true}F.bind("click",function(){updateMailDialog(A)});F.parent().find("label").bind("click",function(){updateMailDialog(A)})}else{if(H=="false"){F.bind("click",function(){updateMailDialog(false)});F.parent().find("label").bind("click",function(){updateMailDialog(false)})}}});updateMailDialog(E&&A&&D)}function updateMailDialog(B){var A=$("#mailDialog .content");if(B){A.find(".ok").css(cssHidden);A.find(".next").css(cssVisible)}else{A.find(".ok").css(cssVisible);A.find(".next").css(cssHidden)}}function repositionMailDialog(){repositionDialog($("#mailDialog"),$("#mailDialogDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closeMailDialog(){var B=$("#summary #right #mail form");var A=$("#mailDialog .content form");updateOriginalForm(B,A);closeDialog("mailDialog",repositionMailDialog,mailDialogEscapeCallback)}function mailDialogEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeMailDialog)&&A=="mailDialog"){functionLookup.closeMailDialog();return false}return true}function openDealerDialog(){logActionStarted("dealer_request");openDialog("dealerDialog",[],repositionDealerDialog,dealerDialogEscapeCallback,true);var B=$("#dealerDialog .content");var A=$("#summary #right #dealer .template");B.append(A.children().clone());A.find("select").each(function(){var F=$(this);var D=F.attr("name");var C=F.selectedValues();var G=B.find("select[name="+D+"]");for(var E=0;E<C.length;E++){G.selectOptions(C[E])}});A.find("textarea").each(function(){var D=$(this);var C=B.find("textarea[name="+D.attr("name")+"]");C.attr("value",D.attr("value"))});B.find("input:checkbox").checkbox({empty:"images/default/1pxt.gif"});B.find("input:radio").checkbox({className:"jquery-radio",empty:"images/default/1pxt.gif"});B.find("select").replaceCombobox({callback:dealerLocationComboboxCallback});B.find(".page1 .right .options input[type=radio]").parent().parent().bind("click",updateRequiredDealerInputStates);dealerBack();updateRequiredDealerInputStates()}function dealerLocationComboboxCallback(D,B){var E=D.parents("."+B.className+"-box:first");var A=E.find("select");if(A.attr("name")=="dealerLocation"){var C=E.parents(".page1:first");updateDealerNames(C);return C.find(".dname ."+B.className+"-box:first")}return[]}function updateDealerNames(D){var G=D.find(".dlocation select").selectedValues();if(G.length>0){var F=G[0];var C=dealerLocationLookup[F];var E=D.find(".dname select");E.removeOption(/./);for(var A=0;A<C.length;A++){var B=A==0;E.addOption(C[A].id,C[A].name,B)}}}function dealerBack(){var A=$("#dealerDialog .content");A.find(".page1").css(cssVisible);A.find(".page2").css(cssHidden);A.find(".ok").css(cssHidden);A.find(".back").css(cssHidden);A.find(".next").css(cssVisible)}function dealerNext(){var A=$("#dealerDialog .content");if(validateDealerDialog(A)){A.find(".page1").css(cssHidden);A.find(".page2").css(cssVisible);A.find(".ok").css(cssVisible);A.find(".back").css(cssVisible);A.find(".next").css(cssHidden);A.find(".dataprotection .cont").jScrollPane();var B=false;A.find("input[type=radio][name=dealerDataProtection]").each(function(){var D=$(this);var C=D.parent();var E=D.attr("value");if(E=="true"){if(this.checked){B=true}C.bind("click",function(){updateDealerPage2(A,true)});C.parent().find("label").bind("click",function(){updateDealerPage2(A,true)})}else{if(E=="false"){C.bind("click",function(){updateDealerPage2(A,false)});C.parent().find("label").bind("click",function(){updateDealerPage2(A,false)})}}});updateDealerPage2(A,B)}}function validateDealerDialog(C){var B=true;if(!dealerInputType||dealerInputType==FIRST_AND_LAST_NAME){B=validateTextField(C,"dealerClientFirstname",regExName,false)}B&=validateTextField(C,"dealerClientLastname",regExName,false);B&=validateTextField(C,"dealerClientPhone",regExPhone,false);B&=validateTextField(C,"dealerClientMail",regExMail,true);B&=validateTextArea(C,"dealerMessage");var A=getRadioButtonState(C,"dealerContact");if(A&&A=="post"){B&=validateTextField(C,"dealerClientStreet",regExName,false);B&=validateTextField(C,"dealerClientStreetNumber",regExStreetNr,false);B&=validateTextField(C,"dealerClientPostcode",regExPLZ,false);B&=validateTextField(C,"dealerClientLocation",regExName,false)}return B}function validateTextField(C,B,H,F){var D=false;var E=getTextInputValue(C,B);if(E){var A=H.exec(F?E.toLowerCase():E);D=A&&A.length>0}var G=C.find("input[type=text][name="+B+"]");if(D){G.removeClass("invalid")}else{G.addClass("invalid")}return D}function validateTextArea(B,A){var C=getTextareaValue(B,A);var D=B.find("textarea[name="+A+"]");if(C){D.removeClass("invalid")}else{D.addClass("invalid")}return C?true:false}function updateDealerPage2(A,B){if(B){A.find(".ok").show();A.find(".page2 .text").show()}else{A.find(".ok").hide();A.find(".page2 .text").hide()}}function updateRequiredDealerInputStates(){var D=$("#dealerDialog .content");var C=getRadioButtonState(D,"dealerContact");var F=D.find(".street label span");var B=D.find(".streetnumber label span");var E=D.find(".postcode label span");var A=D.find(".location label span");if(C=="post"){F.show();B.show();E.show();A.show()}else{F.hide();B.hide();E.hide();A.hide()}}function repositionDealerDialog(){repositionDialog($("#dealerDialog"),$("#dealerDialogDisabled"),$(".root"),{top:330,right:16,bottom:20,left:16},true)}function closeDealerDialog(){var B=$("#summary #right #dealer");var A=$("#dealerDialog .content");updateOriginalForm(B,A);closeDialog("dealerDialog",repositionDealerDialog,dealerDialogEscapeCallback)}function dealerDialogEscapeCallback(B){var A=dialogs[dialogs.length-1];if(B.keyCode==27&&$.isFunction(functionLookup.closeDealerDialog)&&A=="dealerDialog"){functionLookup.closeDealerDialog();return false}return true}function updateOriginalForm(A,B){B.find("input").each(function(){var D=$(this);var C=D.attr("type");if(C=="radio"||C=="checkbox"){var E=A.find("input[name="+D.attr("name")+"][value="+D.attr("value")+"]");var F=this.checked;E.each(function(){this.checked=F})}else{if(C=="text"){A.find("input[name="+D.attr("name")+"]").attr("value",D.attr("value"))}}});B.find("select").each(function(){var F=$(this);var E=A.find("select[name="+F.attr("name")+"]");E.removeOption(/./);F.copyOptions(E,"all");var C=F.selectedValues();for(var D=0;D<C.length;D++){E.selectOptions(C[D])}});B.find("textarea").each(function(){var C=$(this);var D=A.find("textarea[name="+C.attr("name")+"]");D.attr("value",C.attr("value"))})}function mailDialogNext(){var A=$("#mailDialog .content");A.find(".mmail").css(cssHidden);A.find(".mpdf").css(cssVisible);A.find(".ok").css(cssVisible);A.find(".next").css(cssHidden);A.find(".back").css(cssVisible)}function mailDialogBack(){var A=$("#mailDialog .content");A.find(".mmail").css(cssVisible);A.find(".mpdf").css(cssHidden);A.find(".ok").css(cssHidden);A.find(".next").css(cssVisible);A.find(".back").css(cssHidden)}function submitFinanceForm(){logActionStarted("finance");logActionEnded("finance");$("form[name=finance]").submit()}function logActionStarted(A){if(trackingActive&&s_account&&$.isFunction(s_gi)){var B=s_gi(s_account);clearTrackingPropsAndVar(B);B.prop1="audi_car_configurator";B.prop23=A;B.t()}}function logActionEnded(A){if(trackingActive&&s_account&&$.isFunction(s_gi)){var B=s_gi(s_account);clearTrackingPropsAndVar(B);B.prop1="audi_car_configurator";B.prop27=A;B.t()}}function clearTrackingPropsAndVar(A){A.events="";A.event7="";A.prop14="";A.prop16="";A.prop17="";A.prop19="";A.prop20="";A.prop21="";A.prop22="";A.prop23="";A.prop24="";A.prop25="";A.prop26="";A.prop27="";A.prop28="";A.eVar16="";A.eVar17="";A.eVar18="";A.eVar19="";A.eVar20="";A.eVar21="";A.eVar22="";A.eVar24="";A.eVar25="";A.eVar26="";A.eVar27="";A.products=""}function activateTileHover(A,B){A.hoverIntent({sensitivity:10,interval:250,over:function(){var L=$("#tooltip");var J=L.find(".content");var C=A.offset();var H=A.find(".tt").children().clone();var G=$(window);var F=310;if(B&&!J.find(".blockedby-items").hasClass("hidden")){F=500}J.empty();J.append(H);L.removeClass("hidden");L.show();L.css({top:0,left:0,width:F,height:700,visibility:"hidden"});var I=0;var K=0;J.children().each(function(){var N=$(this);if(!N.hasClass("hidden")){I+=getFullHeight(N);var M=getMaxWidth(this);if(M>K){K=M}}});K+=15;var E=L.find(".hint");E.css({left:"-5px",width:(K+5+6)+"px"});var D=C.left+A.outerWidth()+5;if(D+K>G.scrollLeft()+G.width()){D=C.left-K-6}L.css({top:C.top-I-6,left:D,height:I,width:K,visibility:"visible"})},timeout:0,out:function(){$("#tooltip").hide()}})}function updateTileSections(C,B,A){$.each(C,function(E){var D=$("#"+B+E,A);if(this.visible){D.removeClass("hidden");D.css(cssVisible);updateTiles(this.parts,B,D)}else{D.css(cssHidden)}})}function updateTiles(C,B,A){$.each(C,function(){var W=$("#"+B+"_"+this.htmlId,A);if(this.visible){W.removeClass("hidden");W.css(cssVisible);W.unbind("click");var J=W.find(":not(.tt):first");var T=J.children().children();var D=W.find(".tt");var K=W.find(".blockedby-headline");var Q=W.find(".blockedby-items");if(this.showBlockedBy){Q.empty();for(var S=0;S<this.blockedBy.length;S++){Q.appendDom([{tagName:"div",className:"blockedby-item",childNodes:[{tagName:"span",innerHTML:this.blockedBy[S]}]}])}Q.appendDom([{tagName:"div",className:"clear",innerHTML:"&nbsp;"}]);K.removeClass("hidden");Q.removeClass("hidden")}else{K.addClass("hidden");Q.addClass("hidden")}var M=W.find(".hint");if(this.hasHints){if(M.length<1){D.appendDom([{tagName:"div",className:"hint"}]);M=W.find(".hint")}else{M.empty()}var U=this.tooltipHintTexts;$.each(U,function(Y){if(this.title){M.appendDom([{tagName:"div",childNodes:[{tagName:"span",className:"title",innerHTML:this.title}]}])}for(var X=0;X<this.texts.length;X++){M.appendDom([{tagName:"div",childNodes:[{tagName:"span",innerHTML:this.texts[X]}]}])}if(Y+1>=U.length){M.appendDom([{tagName:"div",className:"spacer",innerHTML:"&nbsp;"}])}})}else{M.remove()}if(this.wheel){var P=D.find(".headline");if(this.tooltipHeadline){P.find("span").text(this.tooltipHeadline);P.removeClass("hidden")}else{P.addClass("hidden")}var I=D.find(".subheadline");if(this.tooltipSubHeadline){I.find("span").text(this.tooltipSubHeadline);I.removeClass("hidden")}else{I.addClass("hidden")}}else{D.find(".headline span").text(this.tooltipHeadline);var N=D.find(".items");N.empty();for(var R=0;R<this.tooltipTexts.length;R++){var E=this.tooltipTexts[R];N.appendDom([{tagName:"div",className:"item",childNodes:[{tagName:"span",className:"title",innerHTML:E.title},{tagName:"span",className:"cont",innerHTML:E.text}]}])}N.appendDom([createClearDiv()])}var G=D.find(".p1");var F=D.find(".p2");if(this.standard){G.hide();F.hide()}else{G.removeClass("hidden");F.removeClass("hidden");G.show();F.show()}if(this.priceOne){var L=G.find(".cont");if(L.length>0){L[0].innerHTML=this.priceOne}}if(this.priceTwo){var V=F.find(".cont");if(V.length>0){V[0].innerHTML=this.priceTwo}}if(this.selected){if(J.hasClass("empty")){J.removeClass("empty");J.addClass("high")}}else{if(J.hasClass("high")){J.removeClass("high");J.addClass("empty")}}var H=this.actionName;if(H){var O=this.id;W.bind("click",function(){functionLookup[H](O);$(this).unbind("click")});T.addClass("pointer")}else{T.removeClass("pointer")}if(this.blocked||this.included){T.addClass("blocked")}else{T.removeClass("blocked")}if(this.image){T.css("background-image","url('"+this.image.src+"')")}}else{W.css(cssHidden)}})}var tracking=function(){var A=null;var H=null;var D=null;var J=null;var O=null;var F=null;var T=null;var I=null;var S=null;var E=null;var Q=null;var G=false;var M=function(U){U.events="";U.event7="";U.event8="";U.event9="";U.event10="";U.event40="";U.prop14="";U.prop15="";U.prop16="";U.prop17="";U.prop18="";U.prop19="";U.prop20="";U.prop21="";U.prop22="";U.prop23="";U.prop24="";U.prop25="";U.prop26="";U.prop27="";U.prop28="";U.eVar16="";U.eVar17="";U.eVar18="";U.eVar19="";U.eVar20="";U.eVar21="";U.eVar22="";U.eVar23="";U.eVar24="";U.eVar25="";U.eVar26="";U.eVar27="";U.products=""};var L=function(U){return !U||$.trim(U)==""||$.trim(U)=="&nbsp;"||$.trim(U)=="null"};var N=function(){return G&&s_account&&$.isFunction(s_gi)};var C=function(){if(N()){var U=s_gi(s_account);M(U);if(!L(I)){U.pageName=I}U.prop1="audi_car_configurator";U.eVar18=I;U.prop28="false";U.t()}};var B=function(V,W){if(N()){var U=s_gi(s_account);M(U);if(!L(I)){U.pageName=I}U.prop1="audi_car_configurator";U.prop8="true";if(!L(V)&&!L(W)){U.eVar27="true_["+V+"_"+W+"]"}U.t()}};var K=function(U){if(N()){var V=s_gi(s_account);M(V);if(!L(U)){V.pageName=U}V.prop1="audi_car_configurator";V.t()}};var R=function(V,U){if(N()){var W=s_gi(s_account);M(W);if(!L(U)){W.pageName=U}W.prop1="audi_car_configurator";W.prop23=V;W.t()}};var P=function(V,U){if(N()){var W=s_gi(s_account);M(W);if(!L(U)){W.pageName=U}if(V=="dealer_request"){W.events="event40"}W.prop1="audi_car_configurator";W.prop27=V;W.t()}};return{startConflict:C,solvedConflict:B,trackPage:K,actionStarted:R,actionEnded:P,setTracking:function(U){G=U},isTracking:function(){return G},setDealerPageName:function(U){A=U},getDealerPageName:function(){return A},setPdfPageName:function(U){H=U},getPdfPageName:function(){return H},setMailPageName:function(U){D=U},getMailPageName:function(){return D},setYourAudiPageName:function(U){J=U},getYourAudiPageName:function(){return J},setYourAudiTechnicalPageName:function(U){O=U},getYourAudiTechnicalPageName:function(){return O},setYourAudiStandardPageName:function(U){F=U},getYourAudiStandardPageName:function(){return F},setEngineComparePageName:function(U){T=U},getEngineComparePageName:function(){return T},setConflictPageName:function(U){I=U},getConflictPageName:function(){return I},setBookmarkPageName:function(U){S=U},getBookmarkPageName:function(){return S},setDealerSearchPageName:function(U){E=U},getDealerSearchPageName:function(){return E},setCurrentName:function(U){Q=U},getCurrentPageName:function(){return Q}}}();
