//########################################################################################################################
// esc.Ajax 1.0.5
// Copyright Escapenet
// created by BG 2009
//########################################################################################################################
window.document.onmousemove = storeMousePos;

//Maus Position speichern
function storeMousePos(evt) 
{ 
  if(!evt) evt = window.event; 
    mousePosition = evt.clientX + ' ' + evt.clientY;
} 



//########################################################################################################################
// HTTP Request Handling
//########################################################################################################################

//HTTP Request durchführen
function getXmlHttpObject(target,handler)
{ 
  //Für IE6 und älter die ActiveX XMLHTTP Methode verwenden
  if (navigator.appVersion.indexOf("MSIE 6.0") >= 0)
    var objXmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
  else
    var objXmlHttp = new XMLHttpRequest();

  objXmlHttp.onreadystatechange = function()
  {
    if (objXmlHttp.readyState == 4 || objXmlHttp.readyState == "complete")
    {
      var strContent = objXmlHttp.responseText;	  
	  
	  //Wie weiter vorgehen?
	  if (target == '')
	    return strContent;
	  else
	  {
        if (handler == '')
		  executeScripts(strContent,target);
	    else
	      eval(handler(strContent));
	  }
    }
  }
  return objXmlHttp;
} 

//Führt die Javascript (script) Blöcke aus
function executeScripts(r,target)
{	
  //Script Blöcke mittels RegEx ermitteln
  var reg = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
  var match = new RegExp(reg, 'img');
  var response = r.replace(match, '');
  var scripts = r.match(match);
  match2 = new RegExp(reg, 'im'); 
  
  if (document.getElementById(target))
  {
    document.getElementById(target).innerHTML = response;
  
	//Alle Script Blöcke ausführen
	if (scripts)
	{
	  if (scripts.length != undefined)
	  {
		for (var i = 0; i < scripts.length; i++)
		  eval(scripts[i].match(match2)[1]);
	  }
	}
  }
}

//HTTP Request einer beliebigen Seite durchführen
function getHTTPContent(url,returnDIV,handler)
{
  //Wiederholende Requests abbrechen sofern vorhanden
  abortRepeatingHTTPRequests();
  
  //HTTP GET Request ausführen
  xmlHttp = getXmlHttpObject(returnDIV,handler);
  xmlHttp.open("GET", url , true);
  xmlHttp.setRequestHeader("If-Modified-Since", "Fr, 1 Jan 2010 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Expires", "Fr, 1 Jan 2010, 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
  xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); 	
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  //xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(null);
}

//Formular via POST an Server schicken
function saveHTTPContent(formID,site,div)
{	
  //Wiederholende Requests abbrechen sofern vorhanden
  abortRepeatingHTTPRequests();

  //Aus allen Form Elemente die Werte abholen
  formValues = getFormElements(formID); 
  
  //HTTP POST Request ausführen
  xmlHttp = getXmlHttpObject(div,'');
  xmlHttp.open('POST',site,true);
  xmlHttp.setRequestHeader("If-Modified-Since", "Fr, 1 Jan 2010 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Expires", "Fr, 1 Jan 2010, 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
  xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); 	
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", formValues.length);
  //xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(formValues);
}

//Loader anzeigen
function showLoader(div,text)
{
  if (!text)
    text = '';
  document.getElementById(div).innerHTML = '<img src="/admin/images/icons/ajax_loader.gif" alt="" class="image-icon" />' + text
}

//Bricht einen laufenden Timeout ab der für eine wiederholende HTTP Anfrage definiert wurde
function abortRepeatingHTTPRequests()
{
  if(typeof repeatHTTPRequest != 'undefined')
    clearTimeout(repeatHTTPRequest);
}



//########################################################################################################################
// Dynamische HTML Struktur Anpassungen
//########################################################################################################################

//Fügt dynamisch ein HTML Element dazu
function attachNode(parentNodeID,htmlElement,newNodeID,positionTyp,width,height)
{
  if (parentNodeID == 'html' || parentNodeID == 'head' || parentNodeID == 'body')
    var list = document.getElementsByTagName(parentNodeID)[0];
  else
    var list = document.getElementById(parentNodeID);
  
  //Prüfen ob ein HTML Element mit der ID schon existiert und wenn ja entfernen
  if (document.getElementById(newNodeID))
    removeNode(newNodeID);
  
  var newnode = document.createElement(htmlElement);
  if (newNodeID != '')
	newnode.setAttribute("id",newNodeID);
  
  //Wenn iframe dann zusätzlich Name Attribut hinzufügen
  if (htmlElement == 'iframe')
  {
	newnode.setAttribute("name",newNodeID);
	newnode.setAttribute("src",'/leer.htm');
	newnode.setAttribute("frameborder",'0');
  }
  
  //Mittig auf dem Bildschirm
  if (positionTyp == 'center')
  {
	var cssLeft = (document.body.offsetWidth-width)/2;
	var cssTop = ((document.body.offsetHeight-height)/2);
	newnode.style.cssText = 'display:none; width:' + width + 'px; height:' + height + 'px; left:' + cssLeft + 'px; top:' + cssTop + 'px;';
  }

  //An Mausposition plazieren  
  if (positionTyp == 'mouse')
  {
    var position = mousePosition.split(" ");

	//Anhand der vertikalen Scrollposition und der Mausposition die Höhe ausrechnen
	var positionTop = parseInt(document.documentElement.scrollTop) + parseInt(position[1]);

    newnode.style.cssText = 'display:none; left:' + parseInt(position[0]-5) + 'px; top:' + parseInt(positionTop-5) + 'px;';
  }

  //Normal plazieren
  if (positionTyp == 'standard')
  {
    newnode.style.cssText = 'display:none;';
  }

  list.appendChild(newnode);
  return newnode;
}

//Entfernt dynamisch ein HTML Element
function removeNode(id)
{
  if (document.getElementById(id))
  {
	var htmlElement = document.getElementById(id);
	htmlElement.parentNode.removeChild(document.getElementById(id));
  }
}


//Hängt dynamisch ein externes Javascript in den HEAD 
function addScript(url)
{
  //Prüfen ob das Skript nicht schon im HEAD hinzugefügt wurde
  var scriptFiles = document.getElementsByTagName('script');
  var scriptExists = false;
  for (var i=0; i<scriptFiles.length; i++)
  {
    if (scriptFiles[i].getAttribute('src') == url)
	{
 	  //Skript gefunden, abbrechen
	  scriptExists = true;
	  break;
	}
  }
  
  //Wenn Skript Datei noch nicht eingebunden ist jetzt einbinden
  if (scriptExists == false)
  {
	var script = document.createElement('script');
	script.setAttribute('type','text/javascript');  
	script.setAttribute('src',url);
	document.getElementsByTagName('head')[0].appendChild(script);
  }
}

//Hängt dynamisch alle Javascript Dateien von "arrScripts" in den HEAD und führt danach die Anweisungen in "func" aus
function addScripts(arrScripts,func)
{
  for (var i=0; i < arrScripts.length; i++)
	addScript(arrScripts[i]);

  if (func != '')
    return setTimeout(func,500);
}


//Hängt dynamisch ein externes Stylesheet in den HEAD 
function addStyle(url)
{
  //Prüfen ob das Stylesheet nicht schon im HEAD hinzugefügt wurde
  var styleFiles = document.getElementsByTagName('link');
  var styleExists = false;
  for (var i=0; i<styleFiles.length; i++)
  {
    if (styleFiles[i].getAttribute('href') == url)
	{
 	  //Skript gefunden, abbrechen
	  styleExists = true;
	  break;
	}
  }
  
  //Wenn Stylesheet noch nicht eingebunden ist jetzt einbinden
  if (styleExists == false)
  {
	var style = document.createElement('link');
	style.setAttribute('rel','stylesheet');
	style.setAttribute('type','text/css');  
	style.setAttribute('href',url);
	document.getElementsByTagName('head')[0].appendChild(style);
  }
}

//Hängt dynamisch alle Stylesheet Dateien von "arrStyles" in den HEAD und führt danach die Anweisungen in "func" aus
function addStyles(arrStyles,func)
{
  for (var i=0; i < arrStyles.length; i++)
	addStyle(arrStyles[i]);
  
  if (func != '')
    return setTimeout(func,500);
}



//########################################################################################################################
// Event Handling
//########################################################################################################################

//Event hinzufügen
function addEvent(obj,type,fn)
{
   if (obj.addEventListener)
   {
      obj.addEventListener(type,fn,false);
   } 
   else if (obj.attachEvent)
   {
      obj["e"+type+fn] = fn;
      obj[type+fn] = function(){ obj["e"+type+fn]( window.event ); }
      obj.attachEvent( "on"+type, obj[type+fn] );
   }
}

//Event entfernen
function removeEvent(obj,type,fn)
{
   if (obj.removeEventListener)
   {
      obj.removeEventListener(type,fn,false);
   } 
   else if (obj.detachEvent)
   {
      obj.detachEvent( "on"+type, obj[type+fn] );
      obj[type+fn] = null;
      obj["e"+type+fn] = null;
   }
}



//########################################################################################################################
// Mouseover / Mouseout Überwacher
//########################################################################################################################

//Die nachfolgenden 3 Funktionen korrigeren die Situation dass man in einem Elternelement ein Mouseout Event hat
//und dieser beim überfahren von den Kindernelementen ausgelöst wird.
//Aufzurufen so: onmouseout="if (checkMouseEnter(this,event)) {meineMouseOutFunktion()};"
function containsDOM(container,containee)
{
  var isParent = false;
  do
  {
    if ((isParent = container == containee))
      break;
    containee = containee.parentNode;
  }
  while (containee != null);
  return isParent;
}

function checkMouseEnter(element,evt)
{
  if (element.contains && evt.fromElement)
  {
    return !element.contains(evt.fromElement);
  }
  else if (evt.relatedTarget)
  {
    return !containsDOM(element, evt.relatedTarget);
  }
}

function checkMouseLeave(element,evt)
{
  if (element.contains && evt.toElement)
  {
    return !element.contains(evt.toElement);
  }
  else if (evt.relatedTarget)
  {
    return !containsDOM(element, evt.relatedTarget);
  } 
}



//########################################################################################################################
// esc.Form 1.2
// Copyright Escapenet
// created by BG 2009
//########################################################################################################################

//########################################################################################################################
// Form Validator
//########################################################################################################################
//Ermittelt alle Form Elemente in einem Form
function getFormElements(FormID)
{
  var elString = new String();
	
  //Ein Array der die Radiobuttons Namen speichert damit diese nur einmal geprüft werden
  var checkedgroups = '';
	
  elString += '&Form=' + FormID; 
  
  for (var i=0; i < document.forms[FormID].elements.length; ++i)
  {
    //Das Element speichern
    var element = document.forms[FormID].elements[i];
	
    switch (element.type)
    {   
      case "text":
	  case "file":
      case "textarea":
      case "password":
      case "hidden":
        elString += '&' + element.id;
        elString += '=' + encodeURIComponent(element.value);
        break;
		  
      case "checkbox":
        elString += '&' + element.name;
        if (element.checked == true)
          elString += '=' + encodeURIComponent(element.value);
        else
          elString += '=false';	
        break;
		   
      case "radio":
        var group = document.forms[FormID].elements[element.name];
			
        if (checkedgroups.indexOf("[" + element.name + "]") > -1)
          continue;
        else
        {
          checkedgroups += "[" + element.name + "]";
			
          for (var j=0; j<group.length; j++)
          {
            if (group[j].checked)
            {
              elString += '&' + element.name;
              elString += '=' + encodeURIComponent(group[j].value);
            }
          }
        }
        break;
			
      case "select-one":
      case "select-multiple":
        elString += '&' + element.id;
        var selectValues = ''
        for (var j=0; j < element.options.length; j++)
        {
          var item = element.options[j];
          if (item.selected && item.value != "")
          {
            if (selectValues != '')
			{
              selectValues += ',';
			}
				
            selectValues += encodeURIComponent(item.value);
          }
        }
      elString += '=' + selectValues;
      break;				
    }
  }	
  return elString;
}

//Formular abschicken
function submitForm(formID,useFunktionToRun,site,div)
{
  var myForm = document.getElementById(formID);
  
  //Submit Button deaktivieren um mehrfaches Abschicken zu verhindern
  if (myForm.elements['btnSubmit_' + formID])
  {
    myForm.elements['btnSubmit_' + formID].disabled = true;
	myForm.elements['btnSubmit_' + formID].blur();
  }
  else if (myForm.elements['btnSubmit'])
  {
    myForm.elements['btnSubmit'].disabled = true;
	myForm.elements['btnSubmit'].blur();
  }
  
  var valStatus = true;
  var reqFields = 'NONE'
  
  //Erforderliche Felder überprüfen
  if (myForm.elements['hdnRequiredFields_' + formID])
    reqFields = myForm.elements['hdnRequiredFields_' + formID].value;
  else if (myForm.elements['hdnRequiredFields'])
    reqFields = myForm.elements['hdnRequiredFields'].value;
    
  //Überprüfung der erforderlichen Felder durchführen sofern angegeben
  if (reqFields != 'NONE')
  {
	var valField = reqFields.split(",");
	var i = 0;
		
	while (i < valField.length)
	{
	  if (myForm.elements[valField[i]].value == '')
	  {
		valStatus = false;
		
		//Das Element markieren
		myForm.elements[valField[i]].className = 'element-markiert';
		
		//Wenn ein Label für das Element vorhanden ist dann Dieses markieren
		var labels = myForm.getElementsByTagName("label");
		for(j=0; j<labels.length; j++)
		{
		  if (labels[j].id == 'lbl' + valField[i])
			labels[j].className = 'text-rot';
		}
	  }
	  i += 1;
	}
  }
  
  //Sofern der Validierungs-Status OK ist weitermachen
  if (valStatus == true)
  {
	//Wenn keine individuelle Funktion mitgegeben wurde normaler Submit durchführen
	if (useFunktionToRun == '')
	  document.forms[formID].submit();
	else
	  eval(useFunktionToRun(formID,site,div));
  }
  else
  {
	//Bei der Validierung sind Fehler aufgetreten, Submit Button wieder aktivieren
	if (myForm.elements['btnSubmit_' + formID])
	  myForm.elements['btnSubmit_' + formID].disabled = false;
	else if (myForm.elements['btnSubmit'])
	  myForm.elements['btnSubmit'].disabled = false;

	return false;
  }
}

//Ermittelt den Dateinamen der in einem Input type="file" ausgewählt wurde. 
function getFileName(fieldID)
{
  var filePath = document.getElementById(fieldID).value;
  var fileName = filePath.split('\\');
  return fileName[(fileName.length)-1];
}

//HTTP Link auf Korrektheit prüfen
function checkLinkSyntax(elementID)
{
  var htmlElement = document.getElementById(elementID);
  var htmlValue = htmlElement.value;
  var htmlHTTP = '';
  var htmlWWW = '';
  
  if (htmlValue != '')
  {
	//Auf http:// prüfen
	if (htmlValue.indexOf('http://') == -1 && htmlValue.indexOf('https://') == -1)
	  htmlElement.value = 'http://' + htmlValue
			
	//Auf www. prüfen
	var urlparts = htmlValue.split('.');
	if (urlparts.length < 3)
	{
	  if (htmlValue.indexOf('www.') == -1)
	  {
		htmlValue = htmlValue.replace('https','');
		htmlValue = htmlValue.replace('http','');
		htmlValue = htmlValue.replace('://','');
		htmlValue = htmlValue.replace('www.','');
		htmlElement.value = 'http://www.' + htmlValue;
	  }
	}
  }
}

//Email-Adresse auf Korrektheit prüfen
function checkEmailadresseSyntax(elementID)
{
  var emailadresse = document.getElementById(elementID).value;  
  if (emailadresse != '')
  {
	var ausdruck = new RegExp(/^[\w\.-]*[a-zA-Z0-9_]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/);
	if (ausdruck.test(emailadresse) == false)
	{
	  document.getElementById(elementID).value = '';
	  
	  if (document.getElementById('lbl' + elementID))
		document.getElementById('lbl' + elementID).className = 'text-rot';
		
	  setTimeout("document.getElementById('" + elementID + "').focus()",200);
	}
	else
	{
	  if (document.getElementById('lbl' + elementID))
		document.getElementById('lbl' + elementID).className = '';
	}
  }
}



//########################################################################################################################
// Required Fields
//########################################################################################################################
//Alle erforderlichen Felder markieren
function markRequiredFields(FormID)
{
  if (document.getElementById('hdnRequiredFields_' + FormID))
    var reqFields = document.getElementById('hdnRequiredFields_' + FormID).value;
  else if (document.getElementById('hdnRequiredFields'))
    var reqFields = document.getElementById('hdnRequiredFields').value;

  if (reqFields != 'NONE')
  {
	var valField = reqFields.split(",");
	for (var i=0; i < valField.length; i++)
	  markRequiredField(valField[i]);
  }
}

//Einzelndes Feld als erforderlich markieren
function markRequiredField(fieldID)
{
  if (document.getElementById('lbl' + fieldID))
  {
    var labelHTML = document.getElementById('lbl' + fieldID).innerHTML;
	$('#lbl' + fieldID).html('* ' + labelHTML);
  }
}

//Einzelndes Feld nicht mehr als erforderlich markieren
function dismarkRequiredField(fieldID)
{
  if (document.getElementById('lbl' + fieldID))
  {
	var labelHTML = document.getElementById('lbl' + fieldID).innerHTML;
	document.getElementById('lbl' + fieldID).className = '';
	document.getElementById('lbl' + fieldID).innerHTML = labelHTML.replace('* ','');	
  }
}

//Fügt ein Wert in den String mit den erforderlichen Feldern (hdnRequiredFields) hinzu
function addRequiredField(fieldID)
{
  var requiredFields = document.getElementById('hdnRequiredFields').value;
	
  //Prüfen ob der Wert schon vorhanden ist
  var suche = requiredFields.indexOf(fieldID);
  
  //Wert ist nicht vorhanden, hinzufügen
  if (suche == -1)
  {
    document.getElementById('hdnRequiredFields').value += ',' + fieldID;
	markRequiredField(fieldID);
  }
}

//Entfernt ein Wert aus dem String mit den erforderlichen Feldern (hdnRequiredFields)
function removeRequiredField(fieldID)
{
  var requiredFields = document.getElementById('hdnRequiredFields').value;
  document.getElementById('hdnRequiredFields').value = requiredFields.replace(',' + fieldID,'');
  dismarkRequiredField(fieldID);
}



//########################################################################################################################
// Datum + Zeit Überprüfung
//########################################################################################################################
//Prüfen auf gültigen Monat
function checkMonatValue(elementID,monat)
{
  if (monat < 1)
    document.getElementById(elementID).value = 1;

  if (monat > 12)
    document.getElementById(elementID).value = 12;
}

//Prüfung auf gültiges Jahr
function checkYearValue(elementID,jahr)
{
  if (jahr < 1900)
    document.getElementById(elementID).value = 1900;

  if (jahr > 2099)
    document.getElementById(elementID).value = 2099;
}

//Prüfen auf gültige Zeit
function checkZeitValue(elementID,datumzeit)
{
  var arrDatumzeit = datumzeit.split(":");

  if (arrDatumzeit[0] < 0 || arrDatumzeit[0] > 23)
    document.getElementById(elementID).value = '12:00';

  if (arrDatumzeit[1] < 0 || arrDatumzeit[1] > 59)
    document.getElementById(elementID).value = '12:00';
}

//Prüft ob das Bis Datum grösser ist als das Von Datum
function checkBisDatumGroesser(vonDatum,bisDatum)
{
  vonTag = vonDatum.substr(0,2);
  vonMonat = vonDatum.substr(3,2);
  vonJahr = vonDatum.substr(6,4);
  
  bisTag = bisDatum.substr(0,2);
  bisMonat = bisDatum.substr(3,2);
  bisJahr = bisDatum.substr(6,4);
  
  USDatumvon = vonMonat + "/" + vonTag + "/" + vonJahr
  USDatumbis = bisMonat + "/" + bisTag + "/" + bisJahr
  
  return (Date.parse(USDatumvon) <= Date.parse(USDatumbis));
}



//########################################################################################################################
// Radiobutton Funktionen
//########################################################################################################################
//Den Wert des selektierten Radiobuttons ermitteln
function getRadiobuttonValue(radiobuttonGruppenID)
{
  var radios = document.getElementsByName(radiobuttonGruppenID);
  if(radios.length > 0)
  {
    for (i=0; i<radios.length; i++)
    {
      if(radios[i].checked == true)
      {
        return radios[i].value;
        break;
      }
    }
  }
}

//Den Radiobutton mit dem richtigen Wert selektieren
function selectRadiobutton(radiobuttonGruppenID,x)
{
  var radios = document.getElementsByName(radiobuttonGruppenID);
  if(radios.length > 0)
  {
    for (i=0; i<radios.length; i++)
    {
      if(radios[i].value == x)
      {
        radios[i].checked = true;
        break;
      }
    }
  }
}



//########################################################################################################################
// Select Funktionen
//########################################################################################################################
//Bestimmten Wert suchen und selektieren
function selectOption(ddl,x)
{
  var coll = document.getElementById(ddl)
  if(coll.length > 0)
  {
    for (i=0; i < coll.options.length; i++)
    {
      if(coll.options[i].value == x)
      {
        coll.options[i].selected = true;
        break;
      }
    }
  }
}

//Wert hinzufügen
function addOption(ddl,x,y)
{
  var coll = document.getElementById(ddl)
  coll.options[coll.options.length] = new Option(x,y);
}

//Eintrag mit einem bestimmten Wert entfernen
function removeOption(ddl,x)
{
  var coll = document.getElementById(ddl)
  if(coll.length > 0)
  {
    for (i=0; i < coll.options.length; i++)
    {
      if(coll.options[i].value == x)
      {
        coll.remove[i];
        break;
      }
    }
  }
}

//Select Einträge sortieren
function sortOptions(ddl)
{
  var coll = document.getElementById(ddl)
  var x = coll.length;
  if(x > 0)
  {
    //Durch alle Einträge durchgehen
    var arrCombobox = new Array(x);
    for (i=0; i<x; i++)
    {
      //Wert und Name in Array speichern
      arrCombobox[i] = new Array(1);
      arrCombobox[i][0] = coll[i].text;
      arrCombobox[i][1] = coll[i].value;
    }
  }

  //Alle Einträge entfernen
  coll.length = 0;
   
  //Sortieren
  arrCombobox.sort();
 
  //Sortierte Werte wieder in das Select einfügen
  if(arrCombobox.length > 0)
  {
    for (i=0; i < arrCombobox.length; i++)
      addOption(ddl,arrCombobox[i][0],arrCombobox[i][1]);
  }  
}



//########################################################################################################################
// Email Funktionen
//########################################################################################################################
function strReverse(reverseString)
{
  return reverseString.split("").reverse().join("");
}

function mailto(emailadress)
{
  location.href = 'mailto:' + strReverse(emailadress);
}



//########################################################################################################################
// IE Formular Anpassungen
//########################################################################################################################
//Formular Korrekturen die von den verschiedenen IE Browsern nicht unterstützt werden
function formCorrectionsIE()
{
  //Ersetzt die HR Elemente mit einem DIV bei IE6 und IE7 da Diese den margin-bottom der HR Elemente nicht anpassen können	
  if (navigator.appVersion.indexOf("MSIE 6.0") > 0 || navigator.appVersion.indexOf("MSIE 7.0") > 0)
  {
	var hrs = document.getElementsByTagName('hr');
	var hrCount = hrs.length;
	var i = 0;
	
	while(i<hrCount)
	{
	  var parentElement = hrs[0].parentNode;
	  var hrDiv = document.createElement('div');
	  hrDiv.style.cssText = 'float:left; height:6px; width:100%; line-height:1px; font-size:1px;';
	  hrs[0].parentNode.replaceChild(hrDiv,hrs[0]);
	  hrDiv.innerHTML = '&nbsp;';
	  i++;
	}
  }
}



//########################################################################################################################
// esc-Functions 1.0.1
// Copyright Escapenet
// created by BG 2009
//########################################################################################################################

//########################################################################################################################
// Cookie Handling
//########################################################################################################################
//Cookie Informationen speichern
function setCookie(name,wert)
{
  var ablauf = new Date();
  var inTagen = ablauf.getTime() + (30 * 24 * 60 * 60 * 1000);
  ablauf.setTime(inTagen);
  
  if (navigator.appVersion.indexOf("MSIE") >= 0)
    document.cookie = name + '=' + wert;
  else
    document.cookie = name + '=' + wert + '; path=/';
  
}

//Cookie Informationen auslesen
function getCookie(name)
{
  //Alle Cookies ermitteln und splitten
  var cookies = document.cookie.split(/; /g);
  
  //Jedes Cookie analaysieren
  for (var i=0; i<cookies.length; i++)
  {
    var cookie = cookies[i];
    if (cookie.indexOf("=") == -1)
      continue;
	
    //Prüfen ob das Cookie das Gesuchte ist
    if (cookie.substring(0, cookie.indexOf("=")) == name)
    {
      var value = cookie.substring(cookie.indexOf("=") + 1);
      return value;
    }
  }
}



//########################################################################################################################
// Navigation Handling
//########################################################################################################################
//Markiert das angeklickte Navigationselement mit der CSS Klasse "active"
function markActiveNavigationElement(navID,currentURL)
{
  //Dateinamen der aktuellen URL ermitteln
  if (currentURL == '')
    currentURL = getCurrentWebFilename();
  
  //Auf Navigation beziehen
  var subNav = document.getElementById(navID);
  var arrSubNavs = subNav.getElementsByTagName('a');
  var linkSelected = false;
  
  //Versuchen einen genauen Treffer zu ermitteln
  if(arrSubNavs.length > 0)
  {
	for (i=0; i < arrSubNavs.length; i++)
	{
	  var url = getCurrentWebFilename(arrSubNavs[i].href)
	  if(url.indexOf(currentURL) >= 0)
	  {
		arrSubNavs[i].className = 'active';
		linkSelected = true;
		break;
	  }
	}
  }
  
  //Sofern eine genaue Übereinstimmung nicht möglich war eine Andeutung versuchen
  if (linkSelected == false)
  {
	currentURL = currentURL.replace('.asp','');  
	if(arrSubNavs.length > 0)
	{
	  for (i=0; i < arrSubNavs.length; i++)
	  {
		linkUrl = arrSubNavs[i].href.replace('.asp','');
		var arrlinkUrl = linkUrl.split('/');
		currentURL = currentURL.replace('.asp','');
		if(currentURL.indexOf(arrlinkUrl[(arrlinkUrl.length-1)]) >= 0)
		{
		  arrSubNavs[i].className = 'active';
		  linkSelected = true;
		  break;
		}
	  }
	}
  }
}



//########################################################################################################################
// URL Handling
//########################################################################################################################
//Einen übergebenen Parameter in der Adresszeile auslesen 
function getQueryStringVar(name)
{
  var variablen = new Array();
	
  if(window.location.search != "")
  {
    var querystring = window.location.search
    querystring = querystring.replace(/\?/,"");
   
    //trenne den querystring nach jedem & in teilstringe auf
    var teilstrings = querystring.split("&");
   
    //durchlaufe jeden dieser teilstrings
    for (i=0;i<teilstrings.length;i++)
    {
      vararr = teilstrings[i].split("=");
      variablen[vararr[0]] = vararr[1];
 	  
      if (vararr[0] == name)
      {
        return vararr[1];
        break;
      }
    }    
  } 
}

//Ermittelt den Dateinamen der aktuellen Webdatei
function getCurrentWebFilename(urlHref)
{
  if (urlHref == undefined)
    urlHref = self.location.href;
  
  var href = urlHref.replace(/\//g,"\\");
  var strFilename;
  var iIdx = href.lastIndexOf("\\");
	if (-1<iIdx)
	  strFilename = href.substring(iIdx+1);
  else
	strFilename = href;
  
  return strFilename;
}



//########################################################################################################################
// jQuery
//########################################################################################################################
//Zebra Streifen in einer Tabelle dynamisch generieren lassen
function drawTableZebraStriping(tableID)
{
  $(document).ready(function(){
    $(tableID + " tbody tr").mouseover(function(){$(this).addClass("over");}).mouseout(function(){$(this).removeClass("over");});
    $(tableID + " tbody tr:even").addClass("alt");
  });
}



﻿//***********************************************************************************************************
// Form Handling
//***********************************************************************************************************
//Gedrückte Tasten überwachen
if (document.attachEvent)
	document.attachEvent("onkeydown",keyDownEvents);
else if (document.addEventListener)
	document.addEventListener("keydown",keyDownEvents,false);

//Wenn die Seite in einem Frame/iframe geladen wird, ausbrechen
if (window.location != window.parent.location)
{
  window.parent.location  = window.location;
}

//Gedrückte Tasten an Funktionen zuordnen
function keyDownEvents(e)
{
  if (window.event)
    var keynum = window.event.keyCode;
  else if (e.which)
    var keynum = e.which;
  
  //ENTER Taste
  if (keynum == 13)
  {
	if (document.getElementById('btnSubmit'))
	{
	  var onclick = String(document.getElementById('btnSubmit').onclick);
	  onclick = onclick.replace('function onclick(event) {','');
	  onclick = onclick.replace('function onclick()','');
	  onclick = onclick.replace('function anonymous()','');
	  onclick = onclick.replace('function (event)','');
	  onclick = onclick.replace('}','');
	  onclick = onclick.replace('{','');
	  eval(onclick);
	}
  }
}

//Suche abschicken
function submitSuchen(e)
{
  if (window.event)
    var keynum = window.event.keyCode;
  else if (e.which)
    var keynum = e.which;

  if (keynum == 13)
    suchen();
}



//***********************************************************************************************************
// Dialog Funktionen
//***********************************************************************************************************
//Dialog und Blackscreen ausblenden
function hideDetailsDialog(dialogName)
{
  //dialogName Variable für spätere Verwendungszwecke falls es mal ein Thema wird dass mehrere Dialoge gleichzeitig existieren
  $('.detail-dialog').remove();
  $('#divOverlay').remove();
  
  //Falls noch ein Calendar Selector offen ist diesen ebenefalls entfernen
  if (document.getElementById('divCalendar'))
    $('#divCalendar').remove();
}

//Dialog und Blackscreen anzeigen
function showDetailsDialog(dialogName)
{  
  if (dialogName == '')
    dialogName = 'divDialog';
  
  //Falls Dialog noch vorhanden zuerst entfernen
  if (document.getElementById(dialogName))
    removeNode(dialogName);
	
  //Details Form dynamisch erstellen
  attachNode('body','div',dialogName,'standard',0,0);
    
  //Dialog anpassen
  document.getElementById(dialogName).className = 'detail-dialog';
  document.getElementById(dialogName).style.width = '730px';
  document.getElementById(dialogName).style.left = (document.body.offsetWidth-730)/2 + 'px';
  
  //Form innerhalb des Dialogs erstellen
  attachNode(dialogName,'form','frmDialogForm','standard',0,0);
  document.getElementById('frmDialogForm').onsubmit = new Function('return false');
  document.getElementById('frmDialogForm').setAttribute('action','');
  document.getElementById('frmDialogForm').style.display = 'block';

  //Schliessen Grafik einbinden
  attachNode(dialogName,'img','imgDialogClose','standard',0,0);
  document.getElementById('imgDialogClose').src = '/images/dialog/dialog-close.png';
  document.getElementById('imgDialogClose').onclick = new Function("hideDetailsDialog('')");
  document.getElementById('imgDialogClose').style.display = 'block';
  
  //Anzeigen
  $("#" + dialogName).delay(500).fadeIn(500);
  
  //Mittig positionieren
  setTimeout("positionDetailsDialog('" + dialogName + "')",500);
  setTimeout("positionDetailsDialog('" + dialogName + "')",1500);
  
  //Blackscreen einblenden
  showBlackscreen();
}

//Detail Dialog mittig auf dem Bildschirm plazieren
function positionDetailsDialog(dialogName)
{
  if (dialogName == '')
    dialogName = 'divDialog';

  if (document.getElementById(dialogName))
  {
	var dialogWidth = document.getElementById(dialogName).offsetWidth;
	var dialogHeight = document.getElementById(dialogName).offsetHeight;
	
	document.getElementById(dialogName).style.left = (document.body.offsetWidth-dialogWidth)/2 + 'px';
	document.getElementById(dialogName).style.top = (document.body.offsetHeight-dialogHeight)/2 + 'px';
  }
}

//Blackscreen einblenden
function showBlackscreen()
{
  //Blackscreen dynamisch erstellen (sofern nicht vorhanden)
  if (!document.getElementById('divOverlay'))
    attachNode('body','div','divOverlay','standard',0,0);
  
  document.getElementById('divOverlay').onclick = new Function("hideDetailsDialog('')");
  
  document.getElementById('divOverlay').style.height = document.getElementById('divLayout').offsetHeight + 'px';
  document.getElementById('divOverlay').style.width = document.body.offsetWidth + 'px';
  $("#divOverlay").fadeIn(100);
}



//***********************************************************************************************************
// Login
//***********************************************************************************************************
//Login anzeigen
function getLoginForm(errorID)
{
  var aufloesung = screen.width + 'x' + screen.height;
  showDetailsDialog('');
  getHTTPContent('/admin/login.asp?ErrorID=' + errorID + '&Aufloesung=' + aufloesung,'frmDialogForm','');
}



//***********************************************************************************************************
// Diagramm
//***********************************************************************************************************
//Diagramm anzeigen
function getDiagramm(diagrammViewID,selectedValues,target)
{
  getHTTPContent('/common/create_diagramm.asp?DiagrammViewID=' + diagrammViewID + '&SelectedValues=' + selectedValues,target,'');
}



//Liste mit den Aktionen holen
function getAktionen()
{
  var suchen = document.getElementById('tbxAktionSuche').value;
  var geraeteKategorie = document.getElementById('ddlGeraeteKategorien').value;
  var kantone = document.getElementById('ddlKantone').value;	
  var sortieren = document.getElementById('ddlSortieren').value;
	
  getHTTPContent('/aktionen/aktionen_auflistung.asp?Suchen=' + suchen + '&GeraeteKategorie=' + geraeteKategorie + '&KantonAbk=' + kantone + '&Sortieren=' + sortieren,'lstAktionenListe','');	
}

//Datei runterladen
function downloadAktionDatei(aktionDateiID)
{
  //Temporres Iframe dynamisch erstellen
  attachNode('body','iframe','ifrmTemp','standard',0,0);
  document.getElementById('ifrmTemp').style.display = 'block';
  
  //Benutzer exportieren
  document.getElementById('ifrmTemp').src = '/aktionen/_download_aktion_datei.asp?AktionDateiID=' + aktionDateiID;	
  
  //Temporres Iframe entfernen
  setTimeout("removeNode('ifrmTemp')",2000);  
}



/*!
 * jQuery JavaScript Library v1.4.2
 * http://jquery.com/
 *
 * Copyright 2010, John Resig
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * Includes Sizzle.js
 * http://sizzlejs.com/
 * Copyright 2010, The Dojo Foundation
 * Released under the MIT, BSD, and GPL Licenses.
 *
 * Date: Sat Feb 13 22:33:48 2010 -0500
 */
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML="   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);




/*
 * FancyBox - jQuery Plugin
 * Simple and fancy lightbox alternative
 *
 * Examples and documentation at: http://fancybox.net
 * 
 * Copyright (c) 2008 - 2010 Janis Skarnelis
 *
 * Version: 1.3.1 (05/03/2010)
 * Requires: jQuery v1.3+
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

(function(b){var m,u,x,g,D,i,z,A,B,p=0,e={},q=[],n=0,c={},j=[],E=null,s=new Image,G=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,S=/[^\.]\.(swf)\s*$/i,H,I=1,k,l,h=false,y=b.extend(b("<div/>")[0],{prop:0}),v=0,O=!b.support.opacity&&!window.XMLHttpRequest,J=function(){u.hide();s.onerror=s.onload=null;E&&E.abort();m.empty()},P=function(){b.fancybox('<p id="fancybox_error">The requested content cannot be loaded.<br />Please try again later.</p>',{scrolling:"no",padding:20,transitionIn:"none",transitionOut:"none"})},
K=function(){return[b(window).width(),b(window).height(),b(document).scrollLeft(),b(document).scrollTop()]},T=function(){var a=K(),d={},f=c.margin,o=c.autoScale,t=(20+f)*2,w=(20+f)*2,r=c.padding*2;if(c.width.toString().indexOf("%")>-1){d.width=a[0]*parseFloat(c.width)/100-40;o=false}else d.width=c.width+r;if(c.height.toString().indexOf("%")>-1){d.height=a[1]*parseFloat(c.height)/100-40;o=false}else d.height=c.height+r;if(o&&(d.width>a[0]-t||d.height>a[1]-w))if(e.type=="image"||e.type=="swf"){t+=r;
w+=r;o=Math.min(Math.min(a[0]-t,c.width)/c.width,Math.min(a[1]-w,c.height)/c.height);d.width=Math.round(o*(d.width-r))+r;d.height=Math.round(o*(d.height-r))+r}else{d.width=Math.min(d.width,a[0]-t);d.height=Math.min(d.height,a[1]-w)}d.top=a[3]+(a[1]-(d.height+40))*0.5;d.left=a[2]+(a[0]-(d.width+40))*0.5;if(c.autoScale===false){d.top=Math.max(a[3]+f,d.top);d.left=Math.max(a[2]+f,d.left)}return d},U=function(a){if(a&&a.length)switch(c.titlePosition){case "inside":return a;case "over":return'<span id="fancybox-title-over">'+
a+"</span>";default:return'<span id="fancybox-title-wrap"><span id="fancybox-title-left"></span><span id="fancybox-title-main">'+a+'</span><span id="fancybox-title-right"></span></span>'}return false},V=function(){var a=c.title,d=l.width-c.padding*2,f="fancybox-title-"+c.titlePosition;b("#fancybox-title").remove();v=0;if(c.titleShow!==false){a=b.isFunction(c.titleFormat)?c.titleFormat(a,j,n,c):U(a);if(!(!a||a==="")){b('<div id="fancybox-title" class="'+f+'" />').css({width:d,paddingLeft:c.padding,
paddingRight:c.padding}).html(a).appendTo("body");switch(c.titlePosition){case "inside":v=b("#fancybox-title").outerHeight(true)-c.padding;l.height+=v;break;case "over":b("#fancybox-title").css("bottom",c.padding);break;default:b("#fancybox-title").css("bottom",b("#fancybox-title").outerHeight(true)*-1);break}b("#fancybox-title").appendTo(D).hide()}}},W=function(){b(document).unbind("keydown.fb").bind("keydown.fb",function(a){if(a.keyCode==27&&c.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if(a.keyCode==
37){a.preventDefault();b.fancybox.prev()}else if(a.keyCode==39){a.preventDefault();b.fancybox.next()}});if(b.fn.mousewheel){g.unbind("mousewheel.fb");j.length>1&&g.bind("mousewheel.fb",function(a,d){a.preventDefault();h||d===0||(d>0?b.fancybox.prev():b.fancybox.next())})}if(c.showNavArrows){if(c.cyclic&&j.length>1||n!==0)A.show();if(c.cyclic&&j.length>1||n!=j.length-1)B.show()}},X=function(){var a,d;if(j.length-1>n){a=j[n+1].href;if(typeof a!=="undefined"&&a.match(G)){d=new Image;d.src=a}}if(n>0){a=
j[n-1].href;if(typeof a!=="undefined"&&a.match(G)){d=new Image;d.src=a}}},L=function(){i.css("overflow",c.scrolling=="auto"?c.type=="image"||c.type=="iframe"||c.type=="swf"?"hidden":"auto":c.scrolling=="yes"?"auto":"visible");if(!b.support.opacity){i.get(0).style.removeAttribute("filter");g.get(0).style.removeAttribute("filter")}b("#fancybox-title").show();c.hideOnContentClick&&i.one("click",b.fancybox.close);c.hideOnOverlayClick&&x.one("click",b.fancybox.close);c.showCloseButton&&z.show();W();b(window).bind("resize.fb",
b.fancybox.center);c.centerOnScroll?b(window).bind("scroll.fb",b.fancybox.center):b(window).unbind("scroll.fb");b.isFunction(c.onComplete)&&c.onComplete(j,n,c);h=false;X()},M=function(a){var d=Math.round(k.width+(l.width-k.width)*a),f=Math.round(k.height+(l.height-k.height)*a),o=Math.round(k.top+(l.top-k.top)*a),t=Math.round(k.left+(l.left-k.left)*a);g.css({width:d+"px",height:f+"px",top:o+"px",left:t+"px"});d=Math.max(d-c.padding*2,0);f=Math.max(f-(c.padding*2+v*a),0);i.css({width:d+"px",height:f+
"px"});if(typeof l.opacity!=="undefined")g.css("opacity",a<0.5?0.5:a)},Y=function(a){var d=a.offset();d.top+=parseFloat(a.css("paddingTop"))||0;d.left+=parseFloat(a.css("paddingLeft"))||0;d.top+=parseFloat(a.css("border-top-width"))||0;d.left+=parseFloat(a.css("border-left-width"))||0;d.width=a.width();d.height=a.height();return d},Q=function(){var a=e.orig?b(e.orig):false,d={};if(a&&a.length){a=Y(a);d={width:a.width+c.padding*2,height:a.height+c.padding*2,top:a.top-c.padding-20,left:a.left-c.padding-
20}}else{a=K();d={width:1,height:1,top:a[3]+a[1]*0.5,left:a[2]+a[0]*0.5}}return d},N=function(){u.hide();if(g.is(":visible")&&b.isFunction(c.onCleanup))if(c.onCleanup(j,n,c)===false){b.event.trigger("fancybox-cancel");h=false;return}j=q;n=p;c=e;i.get(0).scrollTop=0;i.get(0).scrollLeft=0;if(c.overlayShow){O&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});
x.css({"background-color":c.overlayColor,opacity:c.overlayOpacity}).unbind().show()}l=T();V();if(g.is(":visible")){b(z.add(A).add(B)).hide();var a=g.position(),d;k={top:a.top,left:a.left,width:g.width(),height:g.height()};d=k.width==l.width&&k.height==l.height;i.fadeOut(c.changeFade,function(){var f=function(){i.html(m.contents()).fadeIn(c.changeFade,L)};b.event.trigger("fancybox-change");i.empty().css("overflow","hidden");if(d){i.css({top:c.padding,left:c.padding,width:Math.max(l.width-c.padding*
2,1),height:Math.max(l.height-c.padding*2-v,1)});f()}else{i.css({top:c.padding,left:c.padding,width:Math.max(k.width-c.padding*2,1),height:Math.max(k.height-c.padding*2,1)});y.prop=0;b(y).animate({prop:1},{duration:c.changeSpeed,easing:c.easingChange,step:M,complete:f})}})}else{g.css("opacity",1);if(c.transitionIn=="elastic"){k=Q();i.css({top:c.padding,left:c.padding,width:Math.max(k.width-c.padding*2,1),height:Math.max(k.height-c.padding*2,1)}).html(m.contents());g.css(k).show();if(c.opacity)l.opacity=
0;y.prop=0;b(y).animate({prop:1},{duration:c.speedIn,easing:c.easingIn,step:M,complete:L})}else{i.css({top:c.padding,left:c.padding,width:Math.max(l.width-c.padding*2,1),height:Math.max(l.height-c.padding*2-v,1)}).html(m.contents());g.css(l).fadeIn(c.transitionIn=="none"?0:c.speedIn,L)}}},F=function(){m.width(e.width);m.height(e.height);if(e.width=="auto")e.width=m.width();if(e.height=="auto")e.height=m.height();N()},Z=function(){h=true;e.width=s.width;e.height=s.height;b("<img />").attr({id:"fancybox-img",
src:s.src,alt:e.title}).appendTo(m);N()},C=function(){J();var a=q[p],d,f,o,t,w;e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));o=a.title||b(a).title||e.title||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(o===""&&e.orig)o=e.orig.attr("alt");d=a.nodeName&&/^(?:javascript|#)/i.test(a.href)?e.href||null:e.href||a.href||null;if(e.type){f=e.type;if(!d)d=e.content}else if(e.content)f="html";else if(d)if(d.match(G))f=
"image";else if(d.match(S))f="swf";else if(b(a).hasClass("iframe"))f="iframe";else if(d.match(/#/)){a=d.substr(d.indexOf("#"));f=b(a).length>0?"inline":"ajax"}else f="ajax";else f="inline";e.type=f;e.href=d;e.title=o;if(e.autoDimensions&&e.type!=="iframe"&&e.type!=="swf"){e.width="auto";e.height="auto"}if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=false;e.enableEscapeButton=false;e.showCloseButton=false}if(b.isFunction(e.onStart))if(e.onStart(q,p,e)===false){h=false;
return}m.css("padding",20+e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(i.children())});switch(f){case "html":m.html(e.content);F();break;case "inline":b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(i.children())}).bind("fancybox-cancel",function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();
s=new Image;s.onerror=function(){P()};s.onload=function(){s.onerror=null;s.onload=null;Z()};s.src=d;break;case "swf":t='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+d+'"></param>';w="";b.each(e.swf,function(r,R){t+='<param name="'+r+'" value="'+R+'"></param>';w+=" "+r+'="'+R+'"'});t+='<embed src="'+d+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+w+"></embed></object>";m.html(t);
F();break;case "ajax":a=d.split("#",2);f=e.ajax.data||{};if(a.length>1){d=a[0];if(typeof f=="string")f+="&selector="+a[1];else f.selector=a[1]}h=false;b.fancybox.showActivity();E=b.ajax(b.extend(e.ajax,{url:d,data:f,error:P,success:function(r){if(E.status==200){m.html(r);F()}}}));break;case "iframe":b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" scrolling="'+e.scrolling+'" src="'+e.href+'"></iframe>').appendTo(m);N();break}},$=function(){if(u.is(":visible")){b("div",
u).css("top",I*-40+"px");I=(I+1)%12}else clearInterval(H)},aa=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),u=b('<div id="fancybox-loading"><div></div></div>'),x=b('<div id="fancybox-overlay"></div>'),g=b('<div id="fancybox-wrap"></div>'));if(!b.support.opacity){g.addClass("fancybox-ie");u.addClass("fancybox-ie")}D=b('<div id="fancybox-outer"></div>').append('<div class="fancy-bg" id="fancy-bg-n"></div><div class="fancy-bg" id="fancy-bg-ne"></div><div class="fancy-bg" id="fancy-bg-e"></div><div class="fancy-bg" id="fancy-bg-se"></div><div class="fancy-bg" id="fancy-bg-s"></div><div class="fancy-bg" id="fancy-bg-sw"></div><div class="fancy-bg" id="fancy-bg-w"></div><div class="fancy-bg" id="fancy-bg-nw"></div>').appendTo(g);
D.append(i=b('<div id="fancybox-inner"></div>'),z=b('<a id="fancybox-close"></a>'),A=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),B=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));z.click(b.fancybox.close);u.click(b.fancybox.cancel);A.click(function(a){a.preventDefault();b.fancybox.prev()});B.click(function(a){a.preventDefault();b.fancybox.next()});if(O){x.get(0).style.setExpression("height",
"document.body.scrollHeight > document.body.offsetHeight ? document.body.scrollHeight : document.body.offsetHeight + 'px'");u.get(0).style.setExpression("top","(-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px'");D.prepend('<iframe id="fancybox-hide-sel-frame" src="javascript:\'\';" scrolling="no" frameborder="0" ></iframe>')}}};
b.fn.fancybox=function(a){b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(d){d.preventDefault();if(!h){h=true;b(this).blur();q=[];p=0;d=b(this).attr("rel")||"";if(!d||d==""||d==="nofollow")q.push(this);else{q=b("a[rel="+d+"], area[rel="+d+"]");p=q.index(this)}C();return false}});return this};b.fancybox=function(a,d){if(!h){h=true;d=typeof d!=="undefined"?d:{};q=[];p=d.index||0;if(b.isArray(a)){for(var f=0,o=a.length;f<o;f++)if(typeof a[f]==
"object")b(a[f]).data("fancybox",b.extend({},d,a[f]));else a[f]=b({}).data("fancybox",b.extend({content:a[f]},d));q=jQuery.merge(q,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},d,a));else a=b({}).data("fancybox",b.extend({content:a},d));q.push(a)}if(p>q.length||p<0)p=0;C()}};b.fancybox.showActivity=function(){clearInterval(H);u.show();H=setInterval($,66)};b.fancybox.hideActivity=function(){u.hide()};b.fancybox.next=function(){return b.fancybox.pos(n+1)};b.fancybox.prev=function(){return b.fancybox.pos(n-
1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a,10);if(a>-1&&j.length>a){p=a;C()}if(c.cyclic&&j.length>1&&a<0){p=j.length-1;C()}if(c.cyclic&&j.length>1&&a>=j.length){p=0;C()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");J();e&&b.isFunction(e.onCancel)&&e.onCancel(q,p,e);h=false}};b.fancybox.close=function(){function a(){x.fadeOut("fast");g.hide();b.event.trigger("fancybox-cleanup");i.empty();b.isFunction(c.onClosed)&&c.onClosed(j,n,c);j=e=[];n=p=0;c=e={};h=false}
if(!(h||g.is(":hidden"))){h=true;if(c&&b.isFunction(c.onCleanup))if(c.onCleanup(j,n,c)===false){h=false;return}J();b(z.add(A).add(B)).hide();b("#fancybox-title").remove();g.add(i).add(x).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");i.css("overflow","hidden");if(c.transitionOut=="elastic"){k=Q();var d=g.position();l={top:d.top,left:d.left,width:g.width(),height:g.height()};if(c.opacity)l.opacity=1;y.prop=1;b(y).animate({prop:0},{duration:c.speedOut,easing:c.easingOut,
step:M,complete:a})}else g.fadeOut(c.transitionOut=="none"?0:c.speedOut,a)}};b.fancybox.resize=function(){var a,d;if(!(h||g.is(":hidden"))){h=true;a=i.wrapInner("<div style='overflow:auto'></div>").children();d=a.height();g.css({height:d+c.padding*2+v});i.css({height:d});a.replaceWith(a.children());b.fancybox.center()}};b.fancybox.center=function(){h=true;var a=K(),d=c.margin,f={};f.top=a[3]+(a[1]-(g.height()-v+40))*0.5;f.left=a[2]+(a[0]-(g.width()+40))*0.5;f.top=Math.max(a[3]+d,f.top);f.left=Math.max(a[2]+
d,f.left);g.css(f);h=false};b.fn.fancybox.defaults={padding:10,margin:20,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.3,overlayColor:"#666",titleShow:true,titlePosition:"outside",titleFormat:null,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",
easingIn:"swing",easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,onStart:null,onCancel:null,onComplete:null,onCleanup:null,onClosed:null};b(document).ready(function(){aa()})})(jQuery);



/*
 * CrossSlide jQuery plugin v0.5
 *
 * Copyright 2007-2010 by Tobia Conforto <tobia.conforto@gmail.com>
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by the Free
 * Software Foundation; either version 2 of the License, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program; if not, write to the Free Software Foundation, Inc., 51
 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 */
(function(){var d=jQuery,a=(d.fn.startAnimation?"startAnimation":"animate"),c="pause plugin missing.";function e(h){for(var g=1;g<arguments.length;g++){h=h.replace(new RegExp("\\{"+(g-1)+"}","g"),arguments[g])}return h}function f(){arguments[0]="CrossSlide: "+arguments[0];throw new Error(e.apply(null,arguments))}function b(i){var g=1;var h=i.replace(/^\s*|\s*$/g,"").split(/\s+/);if(h.length>3){throw new Error()}if(h[0]=="center"){if(h.length==1){h=["center","center"]}else{if(h.length==2&&h[1].match(/^[\d.]+x$/i)){h=["center","center",h[1]]}}}if(h.length==3){g=parseFloat(h[2].match(/^([\d.]+)x$/i)[1])}var j=h[0]+" "+h[1];if(j=="left top"||j=="top left"){return{xrel:0,yrel:0,zoom:g}}if(j=="left center"||j=="center left"){return{xrel:0,yrel:0.5,zoom:g}}if(j=="left bottom"||j=="bottom left"){return{xrel:0,yrel:1,zoom:g}}if(j=="center top"||j=="top center"){return{xrel:0.5,yrel:0,zoom:g}}if(j=="center center"){return{xrel:0.5,yrel:0.5,zoom:g}}if(j=="center bottom"||j=="bottom center"){return{xrel:0.5,yrel:1,zoom:g}}if(j=="right top"||j=="top right"){return{xrel:1,yrel:0,zoom:g}}if(j=="right center"||j=="center right"){return{xrel:1,yrel:0.5,zoom:g}}if(j=="right bottom"||j=="bottom right"){return{xrel:1,yrel:1,zoom:g}}return{xrel:parseInt(h[0].match(/^(\d+)%$/)[1])/100,yrel:parseInt(h[1].match(/^(\d+)%$/)[1])/100,zoom:g}}d.fn.crossSlide=function(i,k,l){var g=this,j=this.width(),h=this.height();g.get(0).crossSlideArgs=[i,k,l];k=d.map(k,function(m){return d.extend({},m)});if(!l){l=function(){}}(function(o){var m=0;function n(q,p){p.onload=function(r){m++;k[q].width=p.width;k[q].height=p.height;if(m==k.length){o()}};p.src=k[q].src;if(q+1<k.length){n(q+1,new Image())}}n(0,new Image())})(function(){if(!i.fade){f("missing fade parameter.")}if(i.speed&&i.sleep){f("you cannot set both speed and sleep at the same time.")}var z=Math.round(i.fade*1000);if(i.sleep){var y=Math.round(i.sleep*1000)}if(i.speed){var o=i.speed/1000,u=Math.round(z*o)}g.empty().css({overflow:"hidden",padding:0});if(!/^(absolute|relative|fixed)$/.test(g.css("position"))){g.css({position:"relative"})}if(!g.width()||!g.height()){f("container element does not have its own width and height")}if(i.shuffle){k.sort(function(){return Math.random()-0.5})}for(var s=0;s<k.length;++s){var m=k[s];if(!m.src){f("missing src parameter in picture {0}.",s+1)}if(o){switch(m.dir){case"up":m.from={xrel:0.5,yrel:0,zoom:1};m.to={xrel:0.5,yrel:1,zoom:1};var w=m.height-h-2*u;break;case"down":m.from={xrel:0.5,yrel:1,zoom:1};m.to={xrel:0.5,yrel:0,zoom:1};var w=m.height-h-2*u;break;case"left":m.from={xrel:0,yrel:0.5,zoom:1};m.to={xrel:1,yrel:0.5,zoom:1};var w=m.width-j-2*u;break;case"right":m.from={xrel:1,yrel:0.5,zoom:1};m.to={xrel:0,yrel:0.5,zoom:1};var w=m.width-j-2*u;break;default:f("missing or malformed dir parameter in picture {0}.",s+1)}if(w<=0){f("impossible animation: either picture {0} is too small or div is too large or fade duration too long.",s+1)}m.time_ms=Math.round(w/o)}else{if(!y){if(!m.from||!m.to||!m.time){f("missing either speed/sleep option, or from/to/time params in picture {0}.",s+1)}try{m.from=b(m.from)}catch(v){f('malformed "from" parameter in picture {0}.',s+1)}try{m.to=b(m.to)}catch(v){f('malformed "to" parameter in picture {0}.',s+1)}if(!m.time){f('missing "time" parameter in picture {0}.',s+1)}m.time_ms=Math.round(m.time*1000)}}if(m.from){d.each([m.from,m.to],function(p,B){B.width=Math.round(m.width*B.zoom);B.height=Math.round(m.height*B.zoom);B.left=Math.round((j-B.width)*B.xrel);B.top=Math.round((h-B.height)*B.yrel)})}var x;if(m.href){x=d(e('<a href="{0}"><img src="{1}"/></a>',m.href,m.src))}else{x=d(e('<img src="{0}"/>',m.src))}if(m.onclick){x.click(m.onclick)}if(m.alt){x.find("img").attr("alt",m.alt)}if(m.rel){x.find("img").attr("rel",m.rel)}if(m.href&&m.target){x.attr("target",m.target)}x.appendTo(g)}delete o;function n(C,B){var D=[0,z/(C.time_ms+2*z),1-z/(C.time_ms+2*z),1][B];return{left:Math.round(C.from.left+D*(C.to.left-C.from.left)),top:Math.round(C.from.top+D*(C.to.top-C.from.top)),width:Math.round(C.from.width+D*(C.to.width-C.from.width)),height:Math.round(C.from.height+D*(C.to.height-C.from.height))}}var t=g.find("img").css({position:"absolute",visibility:"hidden",top:0,left:0,border:0});t.eq(0).css({visibility:"visible"});if(!y){t.eq(0).css(n(k[0],1))}var A=i.loop;function q(N,p){if(N%2==0){if(y){var D=N/2,R=(D-1+k.length)%k.length,O=t.eq(D),L=t.eq(R);var K=function(){l(D,O);L.css("visibility","hidden");setTimeout(p,y)}}else{var G=N/2,R=(G-1+k.length)%k.length,Q=t.eq(G),L=t.eq(R),E=k[G].time_ms,M=n(k[G],2);var K=function(){l(G,Q);L.css("visibility","hidden");Q[a](M,E,"linear",p)}}}else{var C=Math.floor(N/2),F=Math.ceil(N/2)%k.length,P=t.eq(C),B=t.eq(F),S={},J={visibility:"visible"},I={};if(F>C){J.opacity=0;I.opacity=1;if(i.doubleFade){S.opacity=0}}else{S.opacity=0;if(i.doubleFade){J.opacity=0;I.opacity=1}}if(!y){d.extend(S,n(k[C],3));d.extend(J,n(k[F],0));d.extend(I,n(k[F],1))}if(d.isEmptyObject(I)){var K=function(){l(F,B,C,P);B.css(J);P[a](S,z,"linear",p)}}else{if(d.isEmptyObject(S)){var K=function(){l(F,B,C,P);B.css(J);B[a](I,z,"linear",p)}}else{var K=function(){l(F,B,C,P);B.css(J);B[a](I,z,"linear");P[a](S,z,"linear",p)}}}}if(i.loop&&N==k.length*2-2){var H=K;K=function(){if(--A){H()}}}if(N>0){return q(N-1,K)}else{return K}}var r=q(k.length*2-1,function(){return r()});r()});return g};d.fn.crossSlideFreeze=function(){this.find("img").stop()};d.fn.crossSlideStop=function(){this.find("img").stop().remove()};d.fn.crossSlideRestart=function(){this.find("img").stop().remove();d.fn.crossSlide.apply(this,this.get(0).crossSlideArgs)};d.fn.crossSlidePause=function(){if(!d.fn.pause){f(c)}this.find("img").pause()};d.fn.crossSlideResume=function(){if(!d.fn.pause){f(c)}this.find("img").resume()}})();




 /*
 * TipTip
 * Copyright 2010 Drew Wilson
 * www.drewwilson.com
 * code.drewwilson.com/entry/tiptip-jquery-plugin
 *
 * Version 1.3   -   Updated: Mar. 23, 2010
 *
 * This Plug-In will create a custom tooltip to replace the default
 * browser tooltip. It is extremely lightweight and very smart in
 * that it detects the edges of the browser window and will make sure
 * the tooltip stays within the current window size. As a result the
 * tooltip will adjust itself to be displayed above, below, to the left 
 * or to the right depending on what is necessary to stay within the
 * browser window. It is completely customizable as well via CSS.
 *
 * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($){$.fn.tipTip=function(options){var defaults={activation:"hover",keepAlive:false,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};var opts=$.extend(defaults,options);if($("#tiptip_holder").length<=0){var tiptip_holder=$('<div id="tiptip_holder" style="max-width:'+opts.maxWidth+';"></div>');var tiptip_content=$('<div id="tiptip_content"></div>');var tiptip_arrow=$('<div id="tiptip_arrow"></div>');$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))}else{var tiptip_holder=$("#tiptip_holder");var tiptip_content=$("#tiptip_content");var tiptip_arrow=$("#tiptip_arrow")}return this.each(function(){var org_elem=$(this);if(opts.content){var org_title=opts.content}else{var org_title=org_elem.attr(opts.attribute)}if(org_title!=""){if(!opts.content){org_elem.removeAttr(opts.attribute)}var timeout=false;if(opts.activation=="hover"){org_elem.hover(function(){active_tiptip()},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}else if(opts.activation=="focus"){org_elem.focus(function(){active_tiptip()}).blur(function(){deactive_tiptip()})}else if(opts.activation=="click"){org_elem.click(function(){active_tiptip();return false}).hover(function(){},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}function active_tiptip(){opts.enter.call(this);tiptip_content.html(org_title);tiptip_holder.hide().removeAttr("class").css("margin","0");tiptip_arrow.removeAttr("style");var top=parseInt(org_elem.offset()['top']);var left=parseInt(org_elem.offset()['left']);var org_width=parseInt(org_elem.outerWidth());var org_height=parseInt(org_elem.outerHeight());var tip_w=tiptip_holder.outerWidth();var tip_h=tiptip_holder.outerHeight();var w_compare=Math.round((org_width-tip_w)/2);var h_compare=Math.round((org_height-tip_h)/2);var marg_left=Math.round(left+w_compare);var marg_top=Math.round(top+org_height+opts.edgeOffset);var t_class="";var arrow_top="";var arrow_left=Math.round(tip_w-12)/2;if(opts.defaultPosition=="bottom"){t_class="_bottom"}else if(opts.defaultPosition=="top"){t_class="_top"}else if(opts.defaultPosition=="left"){t_class="_left"}else if(opts.defaultPosition=="right"){t_class="_right"}var right_compare=(w_compare+left)<parseInt($(window).scrollLeft());var left_compare=(tip_w+left)>parseInt($(window).width());if((right_compare&&w_compare<0)||(t_class=="_right"&&!left_compare)||(t_class=="_left"&&left<(tip_w+opts.edgeOffset+5))){t_class="_right";arrow_top=Math.round(tip_h-13)/2;arrow_left=-12;marg_left=Math.round(left+org_width+opts.edgeOffset);marg_top=Math.round(top+h_compare)}else if((left_compare&&w_compare<0)||(t_class=="_left"&&!right_compare)){t_class="_left";arrow_top=Math.round(tip_h-13)/2;arrow_left=Math.round(tip_w);marg_left=Math.round(left-(tip_w+opts.edgeOffset+5));marg_top=Math.round(top+h_compare)}var top_compare=(top+org_height+opts.edgeOffset+tip_h+8)>parseInt($(window).height()+$(window).scrollTop());var bottom_compare=((top+org_height)-(opts.edgeOffset+tip_h+8))<0;if(top_compare||(t_class=="_bottom"&&top_compare)||(t_class=="_top"&&!bottom_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_top"}else{t_class=t_class+"_top"}arrow_top=tip_h;marg_top=Math.round(top-(tip_h+5+opts.edgeOffset))}else if(bottom_compare|(t_class=="_top"&&bottom_compare)||(t_class=="_bottom"&&!top_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_bottom"}else{t_class=t_class+"_bottom"}arrow_top=-12;marg_top=Math.round(top+org_height+opts.edgeOffset)}if(t_class=="_right_top"||t_class=="_left_top"){marg_top=marg_top+5}else if(t_class=="_right_bottom"||t_class=="_left_bottom"){marg_top=marg_top-5}if(t_class=="_left_top"||t_class=="_left_bottom"){marg_left=marg_left+5}tiptip_arrow.css({"margin-left":arrow_left+"px","margin-top":arrow_top+"px"});tiptip_holder.css({"margin-left":marg_left+"px","margin-top":marg_top+"px"}).attr("class","tip"+t_class);if(timeout){clearTimeout(timeout)}timeout=setTimeout(function(){tiptip_holder.stop(true,true).fadeIn(opts.fadeIn)},opts.delay)}function deactive_tiptip(){opts.exit.call(this);if(timeout){clearTimeout(timeout)}tiptip_holder.fadeOut(opts.fadeOut)}}})}})(jQuery);



﻿/*!
 *  Hyphenator 2.5.0 - client side hyphenation for webbrowsers
 *  Copyright (C) 2010  Mathias Nater, Zürich (mathias at mnn dot ch)
 *  Project and Source hosted on http://code.google.com/p/hyphenator/
 * 
 *  This JavaScript code is free software: you can redistribute
 *  it and/or modify it under the terms of the GNU Lesser
 *  General Public License (GNU LGPL) as published by the Free Software
 *  Foundation, either version 3 of the License, or (at your option)
 *  any later version.  The code is distributed WITHOUT ANY WARRANTY;
 *  without even the implied warranty of MERCHANTABILITY or FITNESS
 *  FOR A PARTICULAR PURPOSE.  See the GNU GPL for more details.
 *
 *  As additional permission under GNU GPL version 3 section 7, you
 *  may distribute non-source (e.g., minimized or compacted) forms of
 *  that code without the copy of the GNU GPL normally required by
 *  section 4, provided you include this license notice and a URL
 *  through which recipients can access the Corresponding Source.
 */
 
/* 
 *  Comments are jsdoctoolkit formatted. See jsdoctoolkit.org
 */
 
/* The following comment is for JSLint: */
/*global window, ActiveXObject, unescape */
/*jslint white: true, browser: true, onevar: true, undef: true, nomen: true, eqeqeq: true, newcap: true, immed: true */

/**
 * @fileOverview
 * A script that does hyphenation in (X)HTML files
 * @author Mathias Nater, <a href = "mailto:mathias@mnn.ch">mathias@mnn.ch</a>
 * @version 2.5.0
  */

/**
 * @constructor
 * @description Provides all functionality to do hyphenation, except the patterns that are loaded
 * externally.
 * @namespace Holds all methods and properties
 * @example
 * &lt;script src = "Hyphenator.js" type = "text/javascript"&gt;&lt;/script&gt;
 * &lt;script type = "text/javascript"&gt;
 *   Hyphenator.run();
 * &lt;/script&gt;
 */
var Hyphenator = (function () {


	/**
	 * @name Hyphenator-languageHint
	 * @fieldOf Hyphenator
	 * @description
	 * A string to be displayed in a prompt if the language can't be guessed.
	 * If you add hyphenation patterns change this string.
	 * Internally, this string is used to define languages that are supported by Hyphenator.
	 * @see Hyphenator-supportedLang
	 * @type string
	 * @private
	 * @see Hyphenator-autoSetMainLanguage
	 */
	var languageHint = 'cs, da, bn, de, en, es, fi, fr, gu, hi, hu, hy, it, kn, lt, ml, nl, or, pa, pl, pt, ru, sv, ta, te, tr, uk',

	/**
	 * @name Hyphenator-supportedLang
	 * @fieldOf Hyphenator
	 * @description
	 * A generated key-value object that stores supported languages.
	 * The languages are retrieved from {@link Hyphenator-languageHint}.
	 * @type object
	 * @private
	 * @example
	 * Check if language lang is supported:
	 * if (supportedLang[lang])
	 */
	supportedLang = (function () {
		var k, i = 0, a = languageHint.split(', '), r = {};
		while (!!(k = a[i++])) {
			r[k] = true;
		}
		return r;
	}()),

	/**
	 * @name Hyphenator-prompterStrings
	 * @fieldOf Hyphenator
	 * @description
	 * A key-value object holding the strings to be displayed if the language can't be guessed
	 * If you add hyphenation patterns change this string.
	 * @type object
	 * @private
	 * @see Hyphenator-autoSetMainLanguage
	 */	
	prompterStrings = {
		'cs': 'Jazyk této internetové stránky nebyl automaticky rozpoznán. Určete prosím její jazyk:',
		'da': 'Denne websides sprog kunne ikke bestemmes. Angiv venligst sprog:',
		'de': 'Die Sprache dieser Webseite konnte nicht automatisch bestimmt werden. Bitte Sprache angeben:',
		'en': 'The language of this website could not be determined automatically. Please indicate the main language:',
		'es': 'El idioma del sitio no pudo determinarse autom%E1ticamente. Por favor, indique el idioma principal:',
		'fi': 'Sivun kielt%E4 ei tunnistettu automaattisesti. M%E4%E4rit%E4 sivun p%E4%E4kieli:',
		'fr': 'La langue de ce site n%u2019a pas pu %EAtre d%E9termin%E9e automatiquement. Veuillez indiquer une langue, s.v.p.%A0:',
		'hu': 'A weboldal nyelvét nem sikerült automatikusan megállapítani. Kérem adja meg a nyelvet:',
		'hy': 'Չհաջողվեց հայտնաբերել այս կայքի լեզուն։ Խնդրում ենք նշեք հիմնական լեզուն՝',
		'it': 'Lingua del sito sconosciuta. Indicare una lingua, per favore:',
		'lt': 'Nepavyko automatiškai nustatyti šios svetainės kalbos. Prašome įvesti kalbą:',
		'ml': 'ഈ വെ%u0D2C%u0D4D%u200Cസൈറ്റിന്റെ ഭാഷ കണ്ടുപിടിയ്ക്കാ%u0D28%u0D4D%u200D കഴിഞ്ഞില്ല. ഭാഷ ഏതാണെന്നു തിരഞ്ഞെടുക്കുക:',
		'nl': 'De taal van deze website kan niet automatisch worden bepaald. Geef de hoofdtaal op:',
		'pt': 'A língua deste site não pôde ser determinada automaticamente. Por favor indique a língua principal:',
		'ru': 'Язык этого сайта не может быть определен автоматически. Пожалуйста укажите язык:',
		'sv': 'Spr%E5ket p%E5 den h%E4r webbplatsen kunde inte avg%F6ras automatiskt. V%E4nligen ange:',
		'tr': 'Bu web sitesinin dilini otomatik olarak tespit edilememiştir. Lütfen ana dili gösterir:',
		'uk': 'Мова цього веб-сайту не може бути визначена автоматично. Будь ласка, вкажіть головну мову:'
	},
	
	/**
	 * @name Hyphenator-basePath
	 * @fieldOf Hyphenator
	 * @description
	 * A string storing the basepath from where Hyphenator.js was loaded.
	 * This is used to load the patternfiles.
	 * The basepath is determined dynamically by searching all script-tags for Hyphenator.js
	 * If the path cannot be determined http://hyphenator.googlecode.com/svn/trunk/ is used as fallback.
	 * @type string
	 * @private
	 * @see Hyphenator-loadPatterns
	 */
	basePath = (function () {
		var s = document.getElementsByTagName('script'), i = 0, p, src, t;
		while (!!(t = s[i++])) {
			if (!t.src) {
				continue;
			}
			src = t.src;
			p = src.indexOf('Hyphenator.js');
			if (p !== -1) {
				return src.substring(0, p);
			}
		}
		return 'http://hyphenator.googlecode.com/svn/trunk/';
	}()),

	/**
	 * @name Hyphenator-isLocal
	 * @fieldOf Hyphenator
	 * @description
	 * isLocal is true, if Hyphenator is loaded from the same domain, as the webpage, but false, if
	 * it's loaded from an external source (i.e. directly from google.code)
	 */
	isLocal = (function () {
		var re = false;
		if (window.location.href.indexOf(basePath) !== -1) {
			re = true;
		}
		return re;
	}()),
	
	/**
	 * @name Hyphenator-documentLoaded
	 * @fieldOf Hyphenator
	 * @description
	 * documentLoaded is true, when the DOM has been loaded. This is set by runOnContentLoaded
	 */
	documentLoaded = false,
	
	/**
	 * @name Hyphenator-dontHyphenate
	 * @fieldOf Hyphenator
	 * @description
	 * A key-value object containing all html-tags whose content should not be hyphenated
	 * @type object
	 * @private
	 * @see Hyphenator-hyphenateElement
	 */
	dontHyphenate = {'script': true, 'code': true, 'pre': true, 'img': true, 'br': true, 'samp': true, 'kbd': true, 'var': true, 'abbr': true, 'acronym': true, 'sub': true, 'sup': true, 'button': true, 'option': true, 'label': true, 'textarea': true},

	/**
	 * @name Hyphenator-enableCache
	 * @fieldOf Hyphenator
	 * @description
	 * A variable to set if caching is enabled or not
	 * @type boolean
	 * @default true
	 * @private
	 * @see Hyphenator.config
	 * @see hyphenateWord
	 */
	enableCache = true,

	/**
	 * @name Hyphenator-enableReducedPatternSet
	 * @fieldOf Hyphenator
	 * @description
	 * A variable to set if storing the used patterns is set
	 * @type boolean
	 * @default false
	 * @private
	 * @see Hyphenator.config
	 * @see hyphenateWord
	 * @see Hyphenator.getRedPatternSet
	 */	
	enableReducedPatternSet = false,
	
	/**
	 * @name Hyphenator-enableRemoteLoading
	 * @fieldOf Hyphenator
	 * @description
	 * A variable to set if pattern files should be loaded remotely or not
	 * @type boolean
	 * @default true
	 * @private
	 * @see Hyphenator.config
	 * @see Hyphenator-loadPatterns
	 */
	enableRemoteLoading = true,
	
	/**
	 * @name Hyphenator-displayToggleBox
	 * @fieldOf Hyphenator
	 * @description
	 * A variable to set if the togglebox should be displayed or not
	 * @type boolean
	 * @default false
	 * @private
	 * @see Hyphenator.config
	 * @see Hyphenator-toggleBox
	 */
	displayToggleBox = false,
	
	/**
	 * @name Hyphenator-hyphenateClass
	 * @fieldOf Hyphenator
	 * @description
	 * A string containing the css-class-name for the hyphenate class
	 * @type string
	 * @default 'hyphenate'
	 * @private
	 * @example
	 * &lt;p class = "hyphenate"&gt;Text&lt;/p&gt;
	 * @see Hyphenator.config
	 */
	hyphenateClass = 'hyphenate',

	/**
	 * @name Hyphenator-dontHyphenateClass
	 * @fieldOf Hyphenator
	 * @description
	 * A string containing the css-class-name for elements that should not be hyphenated
	 * @type string
	 * @default 'donthyphenate'
	 * @private
	 * @example
	 * &lt;p class = "donthyphenate"&gt;Text&lt;/p&gt;
	 * @see Hyphenator.config
	 */
	dontHyphenateClass = 'donthyphenate',
	
	/**
	 * @name Hyphenator-min
	 * @fieldOf Hyphenator
	 * @description
	 * A number wich indicates the minimal length of words to hyphenate.
	 * @type number
	 * @default 6
	 * @private
	 * @see Hyphenator.config
	 */	
	min = 6,
	
	/**
	 * @name Hyphenator-isBookmarklet
	 * @fieldOf Hyphenator
	 * @description
	 * Indicates if Hyphanetor runs as bookmarklet or not.
	 * @type boolean
	 * @default false
	 * @private
	 */	
	isBookmarklet = (function () {
		var loc = null, re = false, jsArray = document.getElementsByTagName('script'), i, l;
		for (i = 0, l = jsArray.length; i < l; i++) {
			if (!!jsArray[i].getAttribute('src')) {
				loc = jsArray[i].getAttribute('src');
			}
			if (!loc) {
				continue;
			} else if (loc.indexOf('Hyphenator.js?bm=true') !== -1) {
				re = true;
			}
		}
		return re;
	}()),

	/**
	 * @name Hyphenator-mainLanguage
	 * @fieldOf Hyphenator
	 * @description
	 * The general language of the document
	 * @type number
	 * @private
	 * @see Hyphenator-autoSetMainLanguage
	 */	
	mainLanguage = null,

	/**
	 * @name Hyphenator-elements
	 * @fieldOf Hyphenator
	 * @description
	 * An array holding all elements that have to be hyphenated. This var is filled by
	 * {@link Hyphenator-gatherDocumentInfos}
	 * @type array
	 * @private
	 */	
	elements = [],
	
	/**
	 * @name Hyphenator-exceptions
	 * @fieldOf Hyphenator
	 * @description
	 * An object containing exceptions as comma separated strings for each language.
	 * When the language-objects are loaded, their exceptions are processed, copied here and then deleted.
	 * @see Hyphenator-prepareLanguagesObj
	 * @type object
	 * @private
	 */	
	exceptions = {},

	/**
	 * @name Hyphenator-docLanguages
	 * @fieldOf Hyphenator
	 * @description
	 * An object holding all languages used in the document. This is filled by
	 * {@link Hyphenator-gatherDocumentInfos}
	 * @type object
	 * @private
	 */	
	docLanguages = {},


	/**
	 * @name Hyphenator-state
	 * @fieldOf Hyphenator
	 * @description
	 * A number that inidcates the current state of the script
	 * 0: not initialized
	 * 1: loading patterns
	 * 2: ready
	 * 3: hyphenation done
	 * 4: hyphenation removed
	 * @type number
	 * @private
	 */	
	state = 0,

	/**
	 * @name Hyphenator-url
	 * @fieldOf Hyphenator
	 * @description
	 * A string containing a RegularExpression to match URL's
	 * @type string
	 * @private
	 */	
	url = '(\\w*:\/\/)?((\\w*:)?(\\w*)@)?((([\\d]{1,3}\\.){3}([\\d]{1,3}))|((www\\.|[a-zA-Z]\\.)?[a-zA-Z0-9\\-\\.]+\\.([a-z]{2,4})))(:\\d*)?(\/[\\w#!:\\.?\\+=&%@!\\-]*)*',
	//      protocoll     usr     pwd                    ip               or                          host                 tld        port               path
	/**
	 * @name Hyphenator-mail
	 * @fieldOf Hyphenator
	 * @description
	 * A string containing a RegularExpression to match mail-adresses
	 * @type string
	 * @private
	 */	
	mail = '[\\w-\\.]+@[\\w\\.]+',

	/**
	 * @name Hyphenator-urlRE
	 * @fieldOf Hyphenator
	 * @description
	 * A RegularExpressions-Object for url- and mail adress matching
	 * @type object
	 * @private
	 */		
	urlOrMailRE = new RegExp('(' + url + ')|(' + mail + ')', 'i'),

	/**
	 * @name Hyphenator-zeroWidthSpace
	 * @fieldOf Hyphenator
	 * @description
	 * A string that holds a char.
	 * Depending on the browser, this is the zero with space or an empty string.
	 * zeroWidthSpace is used to break URLs
	 * @type string
	 * @private
	 */		
	zeroWidthSpace = (function () {
		var zws, ua = navigator.userAgent.toLowerCase();
		zws = String.fromCharCode(8203); //Unicode zero width space
		if (ua.indexOf('msie 6') !== -1) {
			zws = ''; //IE6 doesn't support zws
		}
		if (ua.indexOf('opera') !== -1 && ua.indexOf('version/10.00') !== -1) {
			zws = ''; //opera 10 on XP doesn't support zws
		}
		return zws;
		//return '[zws]';
	}()),
	
	/**
	 * @name Hyphenator-createElem
	 * @fieldOf Hyphenator
	 * @description
	 * A function alias to document.createElementNS or document.createElement
	 * @type function
	 * @private
	 */		
	createElem = function (tagname) {
		if (document.createElementNS) {
			return document.createElementNS('http://www.w3.org/1999/xhtml', tagname);
		} else if (document.createElement) {
			return document.createElement(tagname);
		}
	},
	
	/**
	 * @name Hyphenator-onHyphenationDone
	 * @fieldOf Hyphenator
	 * @description
	 * A method to be called, when the last element has been hyphenated or the hyphenation has been
	 * removed from the last element.
	 * @see Hyphenator.config
	 * @type function
	 * @private
	 */		
	onHyphenationDone = function () {},

	/**
	 * @name Hyphenator-onError
	 * @fieldOf Hyphenator
	 * @description
	 * A function that can be called upon an error.
	 * @see Hyphenator.config
	 * @type function
	 * @private
	 */		
	onError = function (e) {
		window.alert("Hyphenator.js says:\n\nAn Error ocurred:\n" + e.message);
	},

	/**
	 * @name Hyphenator-selectorFunction
	 * @fieldOf Hyphenator
	 * @description
	 * A function that has to return a HTMLNodeList of Elements to be hyphenated.
	 * By default it uses the classname ('hyphenate') to select the elements.
	 * @see Hyphenator.config
	 * @type function
	 * @private
	 */		
	selectorFunction = function () {
		var tmp, el = [], i, l;
		if (document.getElementsByClassName) {
			el = document.getElementsByClassName(hyphenateClass);
		} else {
			tmp = document.getElementsByTagName('*');
			l = tmp.length;
			for (i = 0; i < l; i++)
			{
				if (tmp[i].className.indexOf(hyphenateClass) !== -1 && tmp[i].className.indexOf(dontHyphenateClass) === -1) {
					el.push(tmp[i]);
				}
			}
		}
		return el;
	},

	/**
	 * @name Hyphenator-intermediateState
	 * @fieldOf Hyphenator
	 * @description
	 * The value of style.visibility of the text while it is hyphenated.
	 * @see Hyphenator.config
	 * @type string
	 * @private
	 */		
	intermediateState = 'hidden',
	
	/**
	 * @name Hyphenator-hyphen
	 * @fieldOf Hyphenator
	 * @description
	 * A string containing the character for in-word-hyphenation
	 * @type string
	 * @default the soft hyphen
	 * @private
	 * @see Hyphenator.config
	 */
	hyphen = String.fromCharCode(173),
	
	/**
	 * @name Hyphenator-urlhyphen
	 * @fieldOf Hyphenator
	 * @description
	 * A string containing the character for url/mail-hyphenation
	 * @type string
	 * @default the zero width space
	 * @private
	 * @see Hyphenator.config
	 * @see Hyphenator-zeroWidthSpace
	 */
	urlhyphen = zeroWidthSpace,
	
	/**
	 * @name Hyphenator-Expando
	 * @methodOf Hyphenator
	 * @description
	 * This custom object stores data for elements: storing data directly in elements
	 * (DomElement.customData = foobar;) isn't a good idea. It would lead to conflicts
	 * in form elements, when the form has a child with name="foobar". Therefore, this
	 * solution follows the approach of jQuery: the data is stored in an object and
	 * referenced by a unique attribute of the element. The attribute has a name that 
	 * is built by the prefix "HyphenatorExpando_" and a random number, so if the very
	 * very rare case occurs, that there's already an attribute with the same name, a
	 * simple reload is enough to make it function.
	 * @private
	 */		
	Expando = (function () {
		var container = {},
			name = "HyphenatorExpando_" + Math.random(),
			uuid = 0;
		return {
			getDataForElem : function (elem) {
				return container[elem[name]];
			},
			setDataForElem : function (elem, data) {
				var id;
				if (elem[name] && elem[name] !== '') {
					id = elem[name];
				} else {
					id = uuid++;
					elem[name] = id;
				}
				container[id] = data;
			},
			appendDataForElem : function (elem, data) {
				var k;
				for (k in data) {
					if (data.hasOwnProperty(k)) {
						container[elem[name]][k] = data[k];
					}
				}
			},
			delDataOfElem : function (elem) {
				delete container[elem[name]];
			}
		};
	}()),
		
	/*
	 * runOnContentLoaded is based od jQuery.bindReady()
	 * see
	 * jQuery JavaScript Library v1.3.2
	 * http://jquery.com/
	 *
	 * Copyright (c) 2009 John Resig
	 * Dual licensed under the MIT and GPL licenses.
	 * http://docs.jquery.com/License
	 *
	 * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009)
	 * Revision: 6246
	 */
	/**
	 * @name Hyphenator-runOnContentLoaded
	 * @methodOf Hyphenator
	 * @description
	 * A crossbrowser solution for the DOMContentLoaded-Event based on jQuery
	 * <a href = "http://jquery.com/</a>
	 * @param object the window-object
	 * @param function-object the function to call onDOMContentLoaded
	 * @private
	 */
	runOnContentLoaded = function (w, f) {
		var DOMContentLoaded, toplevel;
		if (documentLoaded) {
			f();
			return;
		}
		function init() {
			if (!documentLoaded) {
				documentLoaded = true;
				f();
			}
		}
		
		function doScrollCheck() {
			try {
				// If IE is used, use the trick by Diego Perini
				// http://javascript.nwbox.com/IEContentLoaded/
				document.documentElement.doScroll("left");
			} catch (error) {
				setTimeout(doScrollCheck, 1);
				return;
			}
		
			// and execute any waiting functions
			init();
		}

		
		// Cleanup functions for the document ready method
		if (document.addEventListener) {
			DOMContentLoaded = function () {
				document.removeEventListener("DOMContentLoaded", DOMContentLoaded, false);
				init();
			};
		
		} else if (document.attachEvent) {
			DOMContentLoaded = function () {
				// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
				if (document.readyState === "complete") {
					document.detachEvent("onreadystatechange", DOMContentLoaded);
					init();
				}
			};
		}

		// Mozilla, Opera and webkit nightlies currently support this event
		if (document.addEventListener) {
			// Use the handy event callback
			document.addEventListener("DOMContentLoaded", DOMContentLoaded, false);
			
			// A fallback to window.onload, that will always work
			window.addEventListener("load", init, false);

		// If IE event model is used
		} else if (document.attachEvent) {
			// ensure firing before onload,
			// maybe late but safe also for iframes
			document.attachEvent("onreadystatechange", DOMContentLoaded);
			
			// A fallback to window.onload, that will always work
			window.attachEvent("onload", init);

			// If IE and not a frame
			// continually check to see if the document is ready
			toplevel = false;
			try {
				toplevel = window.frameElement === null;
			} catch (e) {}

			if (document.documentElement.doScroll && toplevel) {
				doScrollCheck();
			}
		}

	},



	/**
	 * @name Hyphenator-getLang
	 * @methodOf Hyphenator
	 * @description
	 * Gets the language of an element. If no language is set, it may use the {@link Hyphenator-mainLanguage}.
	 * @param object The first parameter is an DOM-Element-Object
	 * @param boolean The second parameter is a boolean to tell if the function should return the {@link Hyphenator-mainLanguage}
	 * if there's no language found for the element.
	 * @private
	 */
	getLang = function (el, fallback) {
		if (!!el.getAttribute('lang')) {
			return el.getAttribute('lang').substring(0, 2).toLowerCase();
		}
		// The following doesn't work in IE due to a bug when getAttribute('xml:lang') in a table
		/*if (!!el.getAttribute('xml:lang')) {
			return el.getAttribute('xml:lang').substring(0, 2);
		}*/
		//instead, we have to do this (thanks to borgzor):
		try {
			if (!!el.getAttribute('xml:lang')) {
				return el.getAttribute('xml:lang').substring(0, 2).toLowerCase();
			}
		} catch (ex) {}
		if (el.tagName !== 'HTML') {
			return getLang(el.parentNode, true);
		}
		if (fallback) {
			return mainLanguage;
		}
		return null;
	},
	
	/**
	 * @name Hyphenator-autoSetMainLanguage
	 * @methodOf Hyphenator
	 * @description
	 * Retrieves the language of the document from the DOM.
	 * The function looks in the following places:
	 * <ul>
	 * <li>lang-attribute in the html-tag</li>
	 * <li>&lt;meta http-equiv = "content-language" content = "xy" /&gt;</li>
	 * <li>&lt;meta name = "DC.Language" content = "xy" /&gt;</li>
	 * <li>&lt;meta name = "language" content = "xy" /&gt;</li>
	 * </li>
	 * If nothing can be found a prompt using {@link Hyphenator-languageHint} and {@link Hyphenator-prompterStrings} is displayed.
	 * If the retrieved language is in the object {@link Hyphenator-supportedLang} it is copied to {@link Hyphenator-mainLanguage}
	 * @private
	 */		
	autoSetMainLanguage = function () {
		var el = document.getElementsByTagName('html')[0],
			m = document.getElementsByTagName('meta'),
			i, text, lang, e, ul;
		mainLanguage = getLang(el);
		if (!mainLanguage) {
			for (i = 0; i < m.length; i++) {
				//<meta http-equiv = "content-language" content="xy">	
				if (!!m[i].getAttribute('http-equiv') && (m[i].getAttribute('http-equiv') === 'content-language')) {
					mainLanguage = m[i].getAttribute('content').substring(0, 2).toLowerCase();
				}
				//<meta name = "DC.Language" content="xy">
				if (!!m[i].getAttribute('name') && (m[i].getAttribute('name') === 'DC.language')) {
					mainLanguage = m[i].getAttribute('content').substring(0, 2).toLowerCase();
				}			
				//<meta name = "language" content = "xy">
				if (!!m[i].getAttribute('name') && (m[i].getAttribute('name') === 'language')) {
					mainLanguage = m[i].getAttribute('content').substring(0, 2).toLowerCase();
				}
			}
		}
		if (!mainLanguage) {
			text = '';
			ul = navigator.language ? navigator.language : navigator.userLanguage;
			ul = ul.substring(0, 2);
			if (prompterStrings.hasOwnProperty(ul)) {
				text = prompterStrings[ul];
			} else {
				text = prompterStrings.en;
			}
			text += ' (ISO 639-1)\n\n' + languageHint;
			lang = window.prompt(unescape(text), ul).toLowerCase();
			if (supportedLang[lang]) {
				mainLanguage = lang;
			} else {
				e = new Error('The language "' + lang + '" is not yet supported.');
				throw e;
			}
		}
	},
    
	/**
	 * @name Hyphenator-gatherDocumentInfos
	 * @methodOf Hyphenator
	 * @description
	 * This method runs through the DOM and executes the process()-function on:
	 * - every node returned by the {@link Hyphenator-selectorFunction}.
	 * The process()-function copies the element to the elements-variable, sets its visibility
	 * to intermediateState, retrieves its language and recursivly descends the DOM-tree until
	 * the child-Nodes aren't of type 1
	 * @private
	 */		
	gatherDocumentInfos = function () {
		var elToProcess, tmp, i = 0,
		process = function (el, hide, lang) {
			var n, i = 0, hyphenatorSettings = {};
			if (hide && intermediateState === 'hidden') {
				if (!!el.getAttribute('style')) {
					hyphenatorSettings.hasOwnStyle = true;
				} else {
					hyphenatorSettings.hasOwnStyle = false;					
				}
				hyphenatorSettings.isHidden = true;
				el.style.visibility = 'hidden';
			}
			if (el.lang && typeof(el.lang) === 'string') {
				hyphenatorSettings.language = el.lang.toLowerCase(); //copy attribute-lang to internal lang
			} else if (lang) {
				hyphenatorSettings.language = lang.toLowerCase();
			} else {
				hyphenatorSettings.language = getLang(el, true);
			}
			lang = hyphenatorSettings.language;
			if (supportedLang[lang]) {
				docLanguages[lang] = true;
			} else {
				if (!Hyphenator.isBookmarklet()) {
					onError(new Error('Language ' + lang + ' is not yet supported.'));
				}
			}
			Expando.setDataForElem(el, hyphenatorSettings);
			elements.push(el);
			while (!!(n = el.childNodes[i++])) {
				if (n.nodeType === 1 && !dontHyphenate[n.nodeName.toLowerCase()] &&
					n.className.indexOf(dontHyphenateClass) === -1 && !(n in elToProcess)) {
					process(n, false, lang);
				}
			}
		};
		if (Hyphenator.isBookmarklet()) {
			elToProcess = document.getElementsByTagName('body')[0];
			process(elToProcess, false, mainLanguage);
		} else {
			elToProcess = selectorFunction();
			while (!!(tmp = elToProcess[i++]))
			{
				process(tmp, true);
			}			
		}
		if (!Hyphenator.languages.hasOwnProperty(mainLanguage)) {
			docLanguages[mainLanguage] = true;
		} else if (!Hyphenator.languages[mainLanguage].prepared) {
			docLanguages[mainLanguage] = true;
		}
		if (elements.length > 0) {
			Expando.appendDataForElem(elements[elements.length - 1], {isLast : true});
		}
	},	
	 
	/**
	 * @name Hyphenator-convertPatterns
	 * @methodOf Hyphenator
	 * @description
	 * Converts the patterns from string '_a6' to object '_a':'_a6'.
	 * The result is stored in the {@link Hyphenator-patterns}-object.
	 * @private
	 * @param string the language whose patterns shall be converted
	 */		
	convertPatterns = function (lang) {
		var plen, anfang, pats, pat, key, tmp = {};
		pats = Hyphenator.languages[lang].patterns;
		for (plen in pats) {
			if (pats.hasOwnProperty(plen)) {
				plen = parseInt(plen, 10);
				anfang = 0;
				while (!!(pat = pats[plen].substr(anfang, plen))) {
					key = pat.replace(/\d/g, '');
					tmp[key] = pat;
					anfang += plen;
				}
			}
		}
		Hyphenator.languages[lang].patterns = tmp;
		Hyphenator.languages[lang].patternsConverted = true;
	},

	/**
	 * @name Hyphenator-convertExceptionsToObject
	 * @methodOf Hyphenator
	 * @description
	 * Converts a list of comma seprated exceptions to an object:
	 * 'Fortran,Hy-phen-a-tion' -> {'Fortran':'Fortran','Hyphenation':'Hy-phen-a-tion'}
	 * @private
	 * @param string a comma separated string of exceptions (without spaces)
	 */		
	convertExceptionsToObject = function (exc) {
		var w = exc.split(', '),
			r = {},
			i, l, key;
		for (i = 0, l = w.length; i < l; i++) {
			key = w[i].replace(/-/g, '');
			if (!r.hasOwnProperty(key)) {
				r[key] = w[i];
			}
		}
		return r;
	},
	
	/**
	 * @name Hyphenator-loadPatterns
	 * @methodOf Hyphenator
	 * @description
	 * Adds a &lt;script&gt;-Tag to the DOM to load an externeal .js-file containing patterns and settings for the given language.
	 * If the iven language is not in the {@link Hyphenator-supportedLang}-Object it returns.
	 * One may ask why we are not using AJAX to load the patterns. The XMLHttpRequest-Object 
	 * has a same-origin-policy. This makes the isBookmarklet-functionality impossible.
	 * @param string The language to load the patterns for
	 * @private
	 * @see Hyphenator-basePath
	 */
	loadPatterns = function (lang) {
		var url, xhr, head, script;
		if (supportedLang[lang] && !Hyphenator.languages[lang]) {
	        url = basePath + 'patterns/' + lang + '.js';
		} else {
			return;
		}
		if (isLocal && !isBookmarklet) {
			//check if 'url' is available:
			xhr = null;
			if (typeof XMLHttpRequest !== 'undefined') {
				xhr = new XMLHttpRequest();
			}
			if (!xhr) {
				try {
					xhr  = new ActiveXObject("Msxml2.XMLHTTP");
				} catch (e) {
					xhr  = null;
				}
			}
			if (xhr) {
				xhr.open('HEAD', url, false);
				xhr.setRequestHeader('Cache-Control', 'no-cache');
				xhr.send(null);
				if (xhr.status === 404) {
					onError(new Error('Could not load\n' + url));
					delete docLanguages[lang];
					return;
				}
			}
		}
		if (createElem) {
			head = document.getElementsByTagName('head').item(0);
			script = createElem('script');
			script.src = url;
			script.type = 'text/javascript';
			head.appendChild(script);
		}
	},
	
	/**
	 * @name Hyphenator-prepareLanguagesObj
	 * @methodOf Hyphenator
	 * @description
	 * Adds a cache to each language and converts the exceptions-list to an object.
	 * @private
	 * @param string the language ob the lang-obj
	 */		
	prepareLanguagesObj = function (lang) {
		var lo = Hyphenator.languages[lang], wrd;
		if (!lo.prepared) {	
			if (enableCache) {
				lo.cache = {};
			}
			if (enableReducedPatternSet) {
				lo.redPatSet = {};
			}
			if (lo.hasOwnProperty('exceptions')) {
				Hyphenator.addExceptions(lang, lo.exceptions);
				delete lo.exceptions;
			}
			if (exceptions.hasOwnProperty('global')) {
				if (exceptions.hasOwnProperty(lang)) {
					exceptions[lang] += ', ' + exceptions.global;
				} else {
					exceptions[lang] = exceptions.global;
				}
			}
			if (exceptions.hasOwnProperty(lang)) {
				lo.exceptions = convertExceptionsToObject(exceptions[lang]);
				delete exceptions[lang];
			} else {
				lo.exceptions = {};
			}
			convertPatterns(lang);
			wrd = '[\\w' + lo.specialChars + '@' + String.fromCharCode(173) + '-]{' + min + ',}';
			lo.genRegExp = new RegExp('(' + url + ')|(' + mail + ')|(' + wrd + ')', 'gi');
			lo.prepared = true;
		}
	},
	
	/**
	 * @name Hyphenator-prepare
	 * @methodOf Hyphenator
	 * @description
	 * This funtion prepares the Hyphenator-Object: If RemoteLoading is turned off, it assumes
	 * that the patternfiles are loaded, all conversions are made and the callback is called.
	 * If RemoteLoading is on (default), it loads the pattern files and waits until they are loaded,
	 * by repeatedly checking Hyphenator.languages. If a patterfile is loaded the patterns are
	 * converted to their object style and the lang-object extended.
	 * Finally the callback is called.
	 * @param function-object callback to call, when all patterns are loaded
	 * @private
	 */
	prepare = function (callback) {
		var lang, docLangEmpty = true, interval;
		if (!enableRemoteLoading) {
			for (lang in Hyphenator.languages) {
				if (Hyphenator.languages.hasOwnProperty(lang)) {
					prepareLanguagesObj(lang);
				}
			}
			state = 2;
			callback();
			return;
		}
		// get all languages that are used and preload the patterns
		state = 1;
		for (lang in docLanguages) {
			if (docLanguages.hasOwnProperty(lang)) {
				loadPatterns(lang);
				docLangEmpty = false;
			}
		}
		if (docLangEmpty) {
			state = 2;
			callback();
			return;
		}
		// wait until they are loaded
		interval = window.setInterval(function () {
			var finishedLoading = false, lang;
			for (lang in docLanguages) {
				if (docLanguages.hasOwnProperty(lang)) {
					if (!Hyphenator.languages[lang]) {
						finishedLoading = false;
						break;
					} else {
						finishedLoading = true;
						delete docLanguages[lang];
						//do conversion while other patterns are loading:
						prepareLanguagesObj(lang);
					}
				}
			}
			if (finishedLoading) {
				window.clearInterval(interval);
				state = 2;
				callback();
			}
		}, 100);
	},

	/**
	 * @name Hyphenator-switchToggleBox
	 * @methodOf Hyphenator
	 * @description
	 * Creates or hides the toggleBox: a small button to turn off/on hyphenation on a page.
	 * @param boolean true when hyphenation is on, false when it's off
	 * @see Hyphenator.config
	 * @private
	 */		
	toggleBox = function (s) {
		var myBox, bdy, myIdAttribute, myTextNode, myClassAttribute;
		if (!!(myBox = document.getElementById('HyphenatorToggleBox'))) {
			if (s) {
				myBox.firstChild.data = 'Hy-phe-na-ti-on';
			} else {
				myBox.firstChild.data = 'Hyphenation';
			}
		} else {
			bdy = document.getElementsByTagName('body')[0];
			myBox = createElem('div');
			myIdAttribute = document.createAttribute('id');
			myIdAttribute.nodeValue = 'HyphenatorToggleBox';
			myClassAttribute = document.createAttribute('class');
			myClassAttribute.nodeValue = dontHyphenateClass;
			myTextNode = document.createTextNode('Hy-phe-na-ti-on');
			myBox.appendChild(myTextNode);
			myBox.setAttributeNode(myIdAttribute);
			myBox.setAttributeNode(myClassAttribute);
			myBox.onclick =  Hyphenator.toggleHyphenation;
			myBox.style.position = 'absolute';
			myBox.style.top = '0px';
			myBox.style.right = '0px';
			myBox.style.margin = '0';
			myBox.style.backgroundColor = '#AAAAAA';
			myBox.style.color = '#FFFFFF';
			myBox.style.font = '6pt Arial';
			myBox.style.letterSpacing = '0.2em';
			myBox.style.padding = '3px';
			myBox.style.cursor = 'pointer';
			myBox.style.WebkitBorderBottomLeftRadius = '4px';
			myBox.style.MozBorderRadiusBottomleft = '4px';
			bdy.appendChild(myBox);
		}
	},

	/**
	 * @name Hyphenator-hyphenateWord
	 * @methodOf Hyphenator
	 * @description
	 * This function is the heart of Hyphenator.js. It returns a hyphenated word.
	 *
	 * If there's already a {@link Hyphenator-hypen} in the word, the word is returned as it is.
	 * If the word is in the exceptions list or in the cache, it is retrieved from it.
	 * If there's a '-' put a zeroWidthSpace after the '-' and hyphenate the parts.
	 * @param string The language of the word
	 * @param string The word
	 * @returns string The hyphenated word
	 * @public
	 */	
	hyphenateWord = function (lang, word) {
		var lo = Hyphenator.languages[lang],
			parts, i, l, w, wl, s, hypos, p, maxwins, win, pat = false, patk, patl, c, digits, z, numb3rs, n, inserted, hyphenatedword;
		if (word === '') {
			return '';
		}
		if (word.indexOf(hyphen) !== -1) {
			//word already contains shy; -> leave at it is!
			return word;
		}
		if (enableCache && lo.cache.hasOwnProperty(word)) { //the word is in the cache
			return lo.cache[word];
		}
		if (lo.exceptions.hasOwnProperty(word)) { //the word is in the exceptions list
			return lo.exceptions[word].replace(/-/g, hyphen);
		}
		if (word.indexOf('-') !== -1) {
			//word contains '-' -> hyphenate the parts separated with '-'
			parts = word.split('-');
			for (i = 0, l = parts.length; i < l; i++) {
				parts[i] = hyphenateWord(lang, parts[i]);
			}
			return parts.join('-');
		}
		//finally the core hyphenation algorithm
		w = '_' + word + '_';
		wl = w.length;
		s = w.split('');
		w = w.toLowerCase();
		hypos = [];
		numb3rs = {'0': true, '1': true, '2': true, '3': true, '4': true, '5': true, '6': true, '7': true, '8': true, '9': true}; //check for member is faster then isFinite()
		n = wl - lo.shortestPattern;
		for (p = 0; p <= n; p++) {
			maxwins = Math.min((wl - p), lo.longestPattern);
			for (win = lo.shortestPattern; win <= maxwins; win++) {
				if (lo.patterns.hasOwnProperty(patk = w.substr(p, win))) {
					pat = lo.patterns[patk];
				} else {
					continue;
				}
				if (enableReducedPatternSet) {
					lo.redPatSet[patk] = pat;
				}
				digits = 1;
				patl = pat.length;
				for (i = 0; i < patl; i++) {
					c = pat.charAt(i);
					if (numb3rs[c]) {
						if (i === 0) {
							z = p - 1;
							if (!hypos[z] || hypos[z] < c) {
								hypos[z] = c;
							}
						} else {
							z = p + i - digits;
							if (!hypos[z] || hypos[z] < c) {
								hypos[z] = c;
							}
						}
						digits++;								
					}
				}
			}
		}
		inserted = 0;
		for (i = lo.leftmin; i <= (word.length - lo.rightmin); i++) {
			if (!!(hypos[i] & 1)) {
				s.splice(i + inserted + 1, 0, hyphen);
				inserted++;
			}
		}
		hyphenatedword = s.slice(1, -1).join('');
		if (enableCache) {
			lo.cache[word] = hyphenatedword;
		}
		return hyphenatedword;
	},
		
	/**
	 * @name Hyphenator-hyphenateURL
	 * @methodOf Hyphenator
	 * @description
	 * Puts {@link Hyphenator-urlhyphen} after each no-alphanumeric char that my be in a URL.
	 * @param string URL to hyphenate
	 * @returns string the hyphenated URL
	 * @public
	 */
	hyphenateURL = function (url) {
		return url.replace(/([:\/\.\?#&_,;!@]+)/gi, '$&' + urlhyphen);
	},

	/**
	 * @name Hyphenator-hyphenateElement
	 * @methodOf Hyphenator
	 * @description
	 * Takes the content of the given element and - if there's text - replaces the words
	 * by hyphenated words. If there's another element, the function is called recursively.
	 * When all words are hyphenated, the visibility of the element is set to 'visible'.
	 * @param object The element to hyphenate
	 * @param string The language used in this element
	 * @public
	 */
	hyphenateElement = function (el) {
		var hyphenatorSettings = Expando.getDataForElem(el),
			lang = hyphenatorSettings.language, hyphenate, n, i;
		if (Hyphenator.languages.hasOwnProperty(lang)) {
			hyphenate = function (word) {
				if (urlOrMailRE.test(word)) {
					return hyphenateURL(word);
				} else {
					return hyphenateWord(lang, word);
				}
			};
			i = 0;
			while (!!(n = el.childNodes[i++])) {
				if (n.nodeType === 3 && n.data.length >= min) { //type 3 = #text -> hyphenate!
					n.data = n.data.replace(Hyphenator.languages[lang].genRegExp, hyphenate);
				}
			}
		}
		if (hyphenatorSettings.isHidden && intermediateState === 'hidden') {
			el.style.visibility = 'visible';
			if (!hyphenatorSettings.hasOwnStyle) {
				el.setAttribute('style', ''); // without this, removeAttribute doesn't work in Safari (thanks to molily)
				el.removeAttribute('style');
			} else {
				if (el.style.removeProperty) {
					el.style.removeProperty('visibility');
				} else if (el.style.removeAttribute) { // IE
					el.style.removeAttribute('visibility');
				}  
			}
		}
		if (hyphenatorSettings.isLast) {
			state = 3;
			onHyphenationDone();
		}
	},
	
	/**
	 * @name Hyphenator-removeHyphenationFromElement
	 * @methodOf Hyphenator
	 * @description
	 * Removes all hyphens from the element. If there are other elements, the function is
	 * called recursively.
	 * Removing hyphens is usefull if you like to copy text. Some browsers are buggy when the copy hyphenated texts.
	 * @param object The element where to remove hyphenation.
	 * @public
	 */
	removeHyphenationFromElement = function (el) {
		var h, i = 0, n;
		switch (hyphen) {
		case '|':
			h = '\\|';
			break;
		case '+':
			h = '\\+';
			break;
		case '*':
			h = '\\*';
			break;
		default:
			h = hyphen;
		}
		while (!!(n = el.childNodes[i++])) {
			if (n.nodeType === 3) {
				n.data = n.data.replace(new RegExp(h, 'g'), '');
				n.data = n.data.replace(new RegExp(zeroWidthSpace, 'g'), '');
			} else if (n.nodeType === 1) {
				removeHyphenationFromElement(n);
			}
		}
	},

	/**
	 * @name Hyphenator-hyphenateDocument
	 * @methodOf Hyphenator
	 * @description
	 * Calls hyphenateElement() for all members of elements. This is done with a setTimout
	 * to prevent a "long running Script"-alert when hyphenating large pages.
	 * Therefore a tricky bind()-function was necessary.
	 * @public
	 */
	hyphenateDocument = function () {
		function bind(fun, arg) {
			return function () {
				return fun(arg);
			};
		}
		var i = 0, el;
		while (!!(el = elements[i++])) {
			window.setTimeout(bind(hyphenateElement, el), 0);

		}
	},

	/**
	 * @name Hyphenator-removeHyphenationFromDocument
	 * @methodOf Hyphenator
	 * @description
	 * Does what it says ;-)
	 * @public
	 */
	removeHyphenationFromDocument = function () {
		var i = 0, el;
		while (!!(el = elements[i++])) {
			removeHyphenationFromElement(el);
		}
		state = 4;
	};

	return {
		
		/**
		 * @name Hyphenator.version
		 * @memberOf Hyphenator
		 * @description
		 * String containing the actual version of Hyphenator.js
		 * [major release].[minor releas].[bugfix release]
		 * major release: new API, new Features, big changes
		 * minor release: new languages, improvements
		 * @public
         */		
		version: '2.5.0',
		
		/**
		 * @name Hyphenator.languages
		 * @memberOf Hyphenator
		 * @description
		 * Objects that holds key-value pairs, where key is the language and the value is the
		 * language-object loaded from (and set by) the pattern file.
		 * The language object holds the following members:
		 * <table>
		 * <tr><th>key</th><th>desc></th></tr>
		 * <tr><td>leftmin</td><td>The minimum of chars to remain on the old line</td></tr>
		 * <tr><td>rightmin</td><td>The minimum of chars to go on the new line</td></tr>
		 * <tr><td>shortestPattern</td><td>The shortes pattern (numbers don't count!)</td></tr>
		 * <tr><td>longestPattern</td><td>The longest pattern (numbers don't count!)</td></tr>
		 * <tr><td>specialChars</td><td>Non-ASCII chars in the alphabet.</td></tr>
		 * <tr><td>patterns</td><td>the patterns</td></tr>
		 * </table>
		 * And optionally (or after prepareLanguagesObj() has been called):
		 * <table>
		 * <tr><td>exceptions</td><td>Excpetions for the secified language</td></tr>
		 * </table>
		 * @public
         */		
		languages: {},
		

		/**
		 * @name Hyphenator.config
		 * @methodOf Hyphenator
		 * @description
		 * Config function that takes an object as an argument. The object contains key-value-pairs
		 * containig Hyphenator-settings. This is a shortcut for calling Hyphenator.set...-Methods.
		 * @param object <table>
		 * <tr><th>key</th><th>values</th><th>default</th></tr>
		 * <tr><td>classname</td><td>string</td><td>'hyphenate'</td></tr>
		 * <tr><td>minwordlength</td><td>integer</td><td>6</td></tr>
		 * <tr><td>hyphenchar</td><td>string</td><td>'&amp;shy;'</td></tr>
		 * <tr><td>urlhyphenchar</td><td>string</td><td>'zero with space'</td></tr>
		 * <tr><td>togglebox</td><td>function</td><td>see code</td></tr>
		 * <tr><td>displaytogglebox</td><td>boolean</td><td>false</td></tr>
		 * <tr><td>remoteloading</td><td>boolean</td><td>true</td></tr>
		 * <tr><td>onhyphenationdonecallback</td><td>function</td><td>empty function</td></tr>
		 * <tr><td>onerrorhandler</td><td>function</td><td>alert(onError)</td></tr>
		 * <tr><td>intermediatestate</td><td>string</td><td>'hidden'</td></tr>
		 * </table>
		 * @public
		 * @example &lt;script src = "Hyphenator.js" type = "text/javascript"&gt;&lt;/script&gt;
         * &lt;script type = "text/javascript"&gt;
         *     Hyphenator.config({'minwordlength':4,'hyphenchar':'|'});
         *     Hyphenator.run();
         * &lt;/script&gt;
         */
		config: function (obj) {
			var assert = function (name, type) {
					if (typeof obj[name] === type) {
						return true;
					} else {
						onError(new Error('Config onError: ' + name + ' must be of type ' + type));
						return false;
					}
				},
				key;
			for (key in obj) {
				if (obj.hasOwnProperty(key)) {
					switch (key) {
					case 'classname':
						if (assert('classname', 'string')) {
							hyphenateClass = obj.classname;
						}
						break;
					case 'donthyphenateclassname':
						if (assert('donthyphenateclassname', 'string')) {
							dontHyphenateClass = obj.donthyphenateclassname;
						}						
						break;
					case 'minwordlength':
						if (assert('minwordlength', 'number')) {
							min = obj.minwordlength;
						}
						break;
					case 'hyphenchar':
						if (assert('hyphenchar', 'string')) {
							if (obj.hyphenchar === '&shy;') {
								obj.hyphenchar = String.fromCharCode(173);
							}
							hyphen = obj.hyphenchar;
						}
						break;
					case 'urlhyphenchar':
						if (obj.hasOwnProperty('urlhyphenchar')) {
							if (assert('urlhyphenchar', 'string')) {
								urlhyphen = obj.urlhyphenchar;
							}
						}
						break;
					case 'togglebox':
						if (assert('togglebox', 'function')) {
							toggleBox = obj.togglebox;
						}
						break;
					case 'displaytogglebox':
						if (assert('displaytogglebox', 'boolean')) {
							displayToggleBox = obj.displaytogglebox;
						}
						break;
					case 'remoteloading':
						if (assert('remoteloading', 'boolean')) {
							enableRemoteLoading = obj.remoteloading;
						}
						break;
					case 'enablecache':
						if (assert('enablecache', 'boolean')) {
							enableCache = obj.enablecache;
						}
						break;
					case 'enablereducedpatternset':
						if (assert('enablereducedpatternset', 'boolean')) {
							enableReducedPatternSet = obj.enablereducedpatternset;
						}
						break;
					case 'onhyphenationdonecallback':
						if (assert('onhyphenationdonecallback', 'function')) {
							onHyphenationDone = obj.onhyphenationdonecallback;
						}
						break;
					case 'onerrorhandler':
						if (assert('onerrorhandler', 'function')) {
							onError = obj.onerrorhandler;
						}
						break;
					case 'intermediatestate':
						if (assert('intermediatestate', 'string')) {
							intermediateState = obj.intermediatestate;
						}
						break;
					case 'selectorfunction':
						if (assert('selectorfunction', 'function')) {
							selectorFunction = obj.selectorfunction;
						}
						break;
					default:
						onError(new Error('Hyphenator.config: property ' + key + ' not known.'));
					}
				}
			}
		},

		/**
		 * @name Hyphenator.run
		 * @methodOf Hyphenator
		 * @description
		 * Bootstrap function that starts all hyphenation processes when called.
		 * @public
		 * @example &lt;script src = "Hyphenator.js" type = "text/javascript"&gt;&lt;/script&gt;
         * &lt;script type = "text/javascript"&gt;
         *   Hyphenator.run();
         * &lt;/script&gt;
         */
		run: function () {
			var process = function () {
				try {
					autoSetMainLanguage();
					gatherDocumentInfos();
					prepare(hyphenateDocument);
					if (displayToggleBox) {
						toggleBox(true);
					}
				} catch (e) {
					onError(e);
				}
			};
			if (!documentLoaded) {
				runOnContentLoaded(window, process);
			}
			if (Hyphenator.isBookmarklet() || documentLoaded) {
				process();
			}
		},
		
		/**
		 * @name Hyphenator.addExceptions
		 * @methodOf Hyphenator
		 * @description
		 * Adds the exceptions from the string to the appropriate language in the 
		 * {@link Hyphenator-languages}-object
		 * @param string The language
		 * @param string A comma separated string of hyphenated words WITH spaces.
		 * @public
		 * @example &lt;script src = "Hyphenator.js" type = "text/javascript"&gt;&lt;/script&gt;
         * &lt;script type = "text/javascript"&gt;
         *   Hyphenator.addExceptions('de','ziem-lich, Wach-stube');
         *   Hyphenator.run();
         * &lt;/script&gt;
         */
		addExceptions: function (lang, words) {
			if (lang === '') {
				lang = 'global';
			}
			if (exceptions.hasOwnProperty[lang]) {
				exceptions[lang] += ", " + words;
			} else {
				exceptions[lang] = words;
			}
		},
		
		/**
		 * @name Hyphenator.hyphenate
		 * @methodOf Hyphenator
		 * @public
		 * @description
		 * Hyphenates the target. The language patterns must be loaded.
		 * If the target is a string, the hyphenated string is returned,
		 * if it's an object, the values are hyphenated directly.
		 * @param mixed the target to be hyphenated
		 * @param string the language of the target
		 * @returns string
		 * @example &lt;script src = "Hyphenator.js" type = "text/javascript"&gt;&lt;/script&gt;
		 * &lt;script src = "patterns/en.js" type = "text/javascript"&gt;&lt;/script&gt;
         * &lt;script type = "text/javascript"&gt;
		 * var t = Hyphenator.hyphenate('Hyphenation', 'en'); //Hy|phen|ation
		 * &lt;/script&gt;
		 */
		hyphenate: function (target, lang) {
			var hyphenate, n, i;
			if (Hyphenator.languages.hasOwnProperty(lang)) {
				if (!Hyphenator.languages[lang].prepared) {
					prepareLanguagesObj(lang);
				}
				hyphenate = function (word) {
					if (urlOrMailRE.test(word)) {
						return hyphenateURL(word);
					} else {
						return hyphenateWord(lang, word);
					}
				};
				if (typeof target === 'string' || target.constructor === String) {
					return target.replace(Hyphenator.languages[lang].genRegExp, hyphenate);
				} else if (typeof target === 'object') {
					i = 0;
					while (!!(n = target.childNodes[i++])) {
						if (n.nodeType === 3 && n.data.length >= min) { //type 3 = #text -> hyphenate!
							n.data = n.data.replace(Hyphenator.languages[lang].genRegExp, hyphenate);
						} else if (n.nodeType === 1) {
							if (n.lang !== '') {
								lang = n.lang;
							}
							Hyphenator.hyphenate(n, lang);
						}
					}
				}
			} else {
				onError(new Error('Language "' + lang + '" is not loaded.'));
			}
		},
		
		/**
		 * @name Hyphenator.getRedPatternSet
		 * @methodOf Hyphenator
		 * @description
		 * Returns {@link Hyphenator-isBookmarklet}.
		 * @param string the language patterns are stored for
		 * @returns object {'patk': pat}
		 * @public
         */
		getRedPatternSet: function (lang) {
			return Hyphenator.languages[lang].redPatSet;
		},
		
		/**
		 * @name Hyphenator.isBookmarklet
		 * @methodOf Hyphenator
		 * @description
		 * Returns {@link Hyphenator-isBookmarklet}.
		 * @returns boolean
		 * @public
         */
		isBookmarklet: function () {
			return isBookmarklet;
		},


		/**
		 * @name Hyphenator.toggleHyphenation
		 * @methodOf Hyphenator
		 * @description
		 * Checks the current state of the ToggleBox and removes or does hyphenation.
		 * @public
         */
		toggleHyphenation: function () {
			switch (state) {
			case 3:
				removeHyphenationFromDocument();
				toggleBox(false);
				break;
			case 4:
				hyphenateDocument();
				toggleBox(true);
				break;
			}
		}
	};
}());
if (Hyphenator.isBookmarklet()) {
	Hyphenator.config({displaytogglebox: true, intermediatestate: 'visible'});
	Hyphenator.run();
}



/*
 Highcharts JS v2.0.1 (2010-07-18)

 (c) 2009-2010 Torstein Hnsi

 License: www.highcharts.com/license
*/
(function(){function R(a,b){a||(a={});for(var c in b)a[c]=b[c];return a}function U(a){return a!==Ta&&a!==null}function na(a,b,c){var d,e="setAttribute",f;if(typeof b=="string")if(U(c))a[e](b,c);else{if(a&&a.getAttribute)f=a.getAttribute(b)}else if(U(b)&&typeof b=="object")for(d in b)a[e](d,b[d]);return f}function nc(a){if(!a||a.constructor!=Array)a=[a];return a}function A(){var a=arguments,b,c;for(b=0;b<a.length;b++){c=a[b];if(U(c))return c}}function oc(a){var b="",c;for(c in a)b+=pc(c)+":"+a[c]+
";";return b}function Ua(a,b){if(qc)if(b&&b.opacity!==Ta)b.filter="alpha(opacity="+b.opacity*100+")";R(a.style,b)}function Da(a,b,c,d,e){a=Ea.createElement(a);b&&R(a,b);e&&Ua(a,{padding:0,border:db,margin:0});c&&Ua(a,c);d&&d.appendChild(a);return a}function Lc(){var a=ra.global.useUTC;Yb=a?Date.UTC:function(b,c,d,e,f,g){return(new Date(b,c,A(d,1),A(e,0),A(f,0),A(g,0))).getTime()};rc=a?"getUTCMinutes":"getMinutes";sc=a?"getUTCHours":"getHours";tc=a?"getUTCDay":"getDay";Ob=a?"getUTCDate":"getDate";
Zb=a?"getUTCMonth":"getMonth";$b=a?"getUTCFullYear":"getFullYear";Mc=a?"setUTCMinutes":"setMinutes";Nc=a?"setUTCHours":"setHours";uc=a?"setUTCDate":"setDate";Oc=a?"setUTCMonth":"setMonth";Pc=a?"setUTCFullYear":"setFullYear"}function dd(a){ra=ka(ra,a);Lc();return ra}function ed(){return ra}function ac(a){bc||(bc=Da(xb));a&&bc.appendChild(a);bc.innerHTML=""}function eb(a,b){var c=function(){};c.prototype=new a;R(c.prototype,b);return c}function fd(a,b,c,d){var e=ra.lang;a=a;var f=isNaN(b=Za(b))?2:b;
b=c===undefined?e.decimalPoint:c;d=d===undefined?e.thousandsSep:d;e=a<0?"-":"";c=parseInt(a=Za(+a||0).toFixed(f),10)+"";var g=(g=c.length)>3?g%3:0;return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{3})(?=\d)/g,"$1"+d)+(f?b+Za(a-c).toFixed(f).slice(2):"")}function gd(a){for(var b={x:a.offsetLeft,y:a.offsetTop};a.offsetParent;){a=a.offsetParent;b.x+=a.offsetLeft;b.y+=a.offsetTop;if(a!=Ea.body&&a!=Ea.documentElement){b.x-=a.scrollLeft;b.y-=a.scrollTop}}return b}function cc(){}function hd(a){function b(m,
i){function r(){var k=[],o;F=K=null;S=[];p(sa,function(s){o=false;p(["xAxis","yAxis"],function(G){if(s.isCartesian&&(G=="xAxis"&&L||G=="yAxis"&&!L)&&(s.options[G]==i.index||s.options[G]===Ta&&i.index===0)){s[G]=T;S.push(s);o=true}});if(!s.visible&&E.ignoreHiddenSeries)o=false;if(o){var z,B;if(!L){z=s.options.stacking;dc=z=="percent";if(z){B=k[s.type]||[];k[s.type]=B}if(dc){F=0;K=99}}if(s.isCartesian){p(s.data,function(G){var H=G.x,fa=G.y;if(F===null)F=K=G[nb];if(L)if(H>K)K=H;else{if(H<F)F=H}else if(U(fa)){if(z)B[H]=
B[H]?B[H]+fa:fa;G=B?B[H]:fa;if(!dc)if(G>K)K=G;else if(G<F)F=G;if(z)$a[s.type][H]={total:G,cum:G}}});if(/(area|column|bar)/.test(s.type)&&!L)if(F>=0){F=0;Qc=true}else if(K<0){K=0;Rc=true}}}})}function w(k,o,s){var z=1,B=0;if(s){z*=-1;B=La}if(yb){z*=-1;B-=z*La}if(o){if(yb)k=La-k;k=k/fb+P}else k=z*(k-P)*fb+B;return k}function I(k,o,s){if(s){var z,B,G;z=w(k);var H;k=B=z+zb;z=G=za-z-zb;if(V){z=ga;G=za-Ab;if(k<W||k>W+va)H=true}else{k=W;B=Ma-vc;if(z<ga||z>ga+oa)H=true}H||M.path(M.crispLine([gb,k,z,Na,B,
G],s)).attr({stroke:o,"stroke-width":s}).add(N)}}function J(k,o,s){k=sb(k,P);o=Kb(o,X);var z=(o-k)*fb;I(k+(o-k)/2,s,z)}function C(k,o,s,z,B,G,H){var fa,pb,ba,Va=i.labels;if(o=="inside")B=-B;if(ha)B=-B;o=pb=w(k+Bb)+zb;fa=ba=za-w(k+Bb)-zb;if(V){fa=za-Ab-(ha?oa:0)+Wa;ba=fa+B}else{o=W+(ha?va:0)+Wa;pb=o-B}z&&M.path(M.crispLine([gb,o,fa,Na,pb,ba],z)).attr({stroke:s,"stroke-width":z}).add(q);if(G&&Va.enabled)if((k=ec.call({index:H,isFirst:k==da[0],isLast:k==da[da.length-1],value:Oa&&Oa[k]?Oa[k]:k}))||k===
0){o=o+Va.x-(Bb&&V?Bb*fb*(yb?-1:1):0);fa=fa+Va.y-(Bb&&!V?Bb*fb*(yb?1:-1):0);M.text(k,o,fa,Va.style,Va.rotation,Va.align).add(q)}}function la(k,o){var s;tb=o?1:Ga.pow(10,hb(Ga.log(k)/Ga.LN10));s=k/tb;if(!o){o=[1,2,2.5,5,10];if(i.allowDecimals===false)if(tb==1)o=[1,2,5,10];else if(tb<=0.1)o=[1/tb]}for(var z=0;z<o.length;z++){k=o[z];if(s<=(o[z]+(o[z+1]||o[z]))/2)break}k*=tb;return k}function ta(){da=[];var k,o=ra.global.useUTC,s=1E3/ab,z=6E4/ab,B=36E5/ab,G=864E5/ab,H=6048E5/ab,fa=2592E6/ab,pb=31556952E3/
ab,ba=[["second",s,[1,2,5,10,15,30]],["minute",z,[1,2,5,10,15,30]],["hour",B,[1,2,3,4,6,8,12]],["day",G,[1,2]],["week",H,[1,2]],["month",fa,[1,2,3,4,6]],["year",pb,null]],Va=ba[6],ia=Va[1],Y=Va[2];for(k=0;k<ba.length;k++){Va=ba[k];ia=Va[1];Y=Va[2];if(ba[k+1]){var id=(ia*Y[Y.length-1]+ba[k+1][1])/2;if(Pa<=id)break}}if(ia==pb&&Pa<5*ia)Y=[1,2,5];ba=la(Pa/ia,Y);var ub;Y=new Date(P*ab);Y.setMilliseconds(0);if(ia>=s)Y.setSeconds(ia>=z?0:ba*hb(Y.getSeconds()/ba));if(ia>=z)Y[Mc](ia>=B?0:ba*hb(Y[rc]()/ba));
if(ia>=B)Y[Nc](ia>=G?0:ba*hb(Y[sc]()/ba));if(ia>=G)Y[uc](ia>=fa?1:ba*hb(Y[Ob]()/ba));if(ia>=fa){Y[Oc](ia>=pb?0:ba*hb(Y[Zb]()/ba));ub=Y[$b]()}if(ia>=pb){ub-=ub%ba;Y[Pc](ub)}ia==H&&Y[uc](Y[Ob]()-Y[tc]()+i.startOfWeek);k=1;ub=Y[$b]();s=Y.getTime()/ab;z=Y[Zb]();for(B=Y[Ob]();s<X&&k<va;){da.push(s);if(ia==pb)s=Yb(ub+k*ba,0)/ab;else if(ia==fa)s=Yb(ub,z+k*ba)/ab;else if(!o&&(ia==G||ia==H))s=Yb(ub,z,B+k*ba*(ia==G?1:7));else s+=ia*ba;k++}da.push(s);i.labels.formatter||(ec=function(){return fc(i.dateTimeLabelFormats[Va[0]],
this.value,1)})}function ja(k){var o=(tb<1?Z(1/tb):1)*10;return Z(k*o)/o}function Fa(){var k;k=hb(P/Pa)*Pa;var o=Ga.ceil(X/Pa)*Pa;da=[];for(k=ja(k);k<=o;){da.push(k);k=ja(k+Pa)}if(Oa){P-=0.5;X+=0.5}ec||(ec=function(){return this.value})}function wa(){ib?ta():Fa();var k=da[0],o=da[da.length-1];if(i.startOnTick)P=k;else P>k&&da.shift();if(i.endOnTick)X=o;else X<o&&da.pop()}function xa(){if(!ib&&!Oa){var k=Lb,o=da.length;Lb=Mb[nb];if(o<Lb){for(;da.length<Lb;)da.push(ja(da[da.length-1]+Pa));fb*=(o-1)/
(Lb-1)}if(U(k)&&Lb!=k)T.isDirty=true}}function bb(){var k,o,s,z=P,B=X;k=i.maxZoom;var G;r();P=A(Aa,i.min,F);X=A(Pb,i.max,K);if(X-P<k){G=(k-X+P)/2;P=sb(P-G,A(i.min,P-G));X=Kb(P+k,A(i.max,P+k))}if(!Oa&&!dc&&U(P)&&U(X)){k=X-P||1;if(!U(i.min)&&!U(Aa)&&Sc&&(F<0||!Qc))P-=k*Sc;if(!U(i.max)&&!U(Pb)&&Tc&&(K>0||!Rc))X+=k*Tc}Pa=Oa||P==X?1:A(i.tickInterval,(X-P)*i.tickPixelInterval/La);if(!ib&&!U(i.tickInterval))Pa=la(Pa);wc=i.minorTickInterval==="auto"&&Pa?Pa/5:i.minorTickInterval;wa();fb=La/(X-P||1);Mb||(Mb=
{x:0,y:0});if(!ib&&da.length>Mb[nb])Mb[nb]=da.length;if(!L)for(o in $a)for(s in $a[o])$a[o][s].cum=$a[o][s].total;if(!T.isDirty)T.isDirty=P!=z||X!=B}function Ha(k,o,s){s=A(s,true);ya(T,"setExtremes",{min:k,max:o},function(){if(Oa){if(k<0)k=0;if(o>Oa.length-1)o=Oa.length-1}Aa=k;Pb=o;s&&m.redraw()})}function Xa(){return{min:P,max:X,dataMin:F,dataMax:K}}function qb(k){if(P>k)k=P;else if(X<k)k=X;return w(k,0,1)}function aa(k){var o=k.width,s=o?xc:yc;s.push(k);o?I(k.value,k.color,k.width):J(k.from,k.to,
k.color)}function t(){var k=i.title,o=i.alternateGridColor,s=i.minorTickWidth,z=i.lineWidth,B,G;B=S.length&&U(P)&&U(X);if(q){q.empty();N.empty()}else{q=M.g("axis").attr({zIndex:7}).add();N=M.g("grid").attr({zIndex:1}).add()}if(B){o&&p(da,function(H,fa){if(fa%2===0&&H<X)J(H,da[fa+1]!==Ta?da[fa+1]:X,o)});p(yc,function(H){J(H.from,H.to,H.color)});if(wc&&!Oa)for(B=P;B<=X;B+=wc){I(B,i.minorGridLineColor,i.minorGridLineWidth);s&&C(B,i.minorTickPosition,i.minorTickColor,s,i.minorTickLength)}p(da,function(H,
fa){G=H+Bb;I(G,i.gridLineColor,i.gridLineWidth);C(H,i.tickPosition,i.tickColor,i.tickWidth,i.tickLength,!(H==P&&!i.showFirstLabel||H==X&&!i.showLastLabel),fa)});p(xc,function(H){I(H.value,H.color,H.width)})}if(!T.hasRenderedLine&&z){s=W+(ha?va:0)+Wa;B=za-Ab-(ha?oa:0)+Wa;M.path(M.crispLine([gb,V?W:s,V?B:ga,Na,V?Ma-vc:s,V?B:za-Ab],z)).attr({stroke:i.lineColor,"stroke-width":z,zIndex:7}).add();T.hasRenderedLine=true}if(!T.hasRenderedTitle&&!T.axisTitle&&k&&k.text){z=V?W:ga;z={low:z+(V?0:La),middle:z+
La/2,high:z+(V?La:0)}[k.align];s=(V?ga+oa:W)+(V?1:-1)*(ha?-1:1)*k.margin-(qc?parseInt(k.style.fontSize||12,10)/3:0);T.axisTitle=M.text(k.text,V?z:s+(ha?va:0)+Wa,V?s-(ha?oa:0)+Wa:z,k.style,k.rotation||0,{low:"left",middle:"center",high:"right"}[k.align]).attr({zIndex:7}).add();T.hasRenderedTitle=true}T.isDirty=false}function v(k){p([yc,xc],function(o){for(var s=0;s<o.length;s++)if(o[s].id==k){o.splice(s,1);break}});t()}function D(){Nb.resetTracker&&Nb.resetTracker();t();p(S,function(k){k.isDirty=true})}
function Q(k,o){T.categories=Oa=k;p(S,function(s){s.translate();s.setTooltipPoints(true)});T.isDirty=true;A(o,true)&&D()}var L=i.isX,ha=i.opposite,V=ma?!L:L,$a={bar:{},column:{},area:{},areaspline:{},line:{}};i=ka(L?gc:zc,V?ha?jd:Uc:ha?kd:ld,i);var T=this,ib=i.type=="datetime",Wa=i.offset||0,nb=L?"x":"y",La=V?va:oa,fb,zb=V?W:Ab,q,N,F,K,S,Aa,Pb,X=null,P=null,Sc=i.minPadding,Tc=i.maxPadding,Qc,Rc,dc,Vc=i.events,Ac,yc=i.plotBands||[],xc=i.plotLines||[],Pa,wc,tb,da,Lb,ec=i.labels.formatter,Oa=i.categories||
L&&m.columnCount,yb=i.reversed,Bb=Oa&&i.tickmarkPlacement=="between"?0.5:0;if(ma&&L&&yb===Ta)yb=true;ha||(Wa*=-1);if(V)Wa*=-1;R(T,{addPlotBand:aa,addPlotLine:aa,adjustTickAmount:xa,categories:Oa,getExtremes:Xa,getThreshold:qb,isXAxis:L,options:i,render:t,setExtremes:Ha,setScale:bb,setCategories:Q,translate:w,redraw:D,removePlotBand:v,removePlotLine:v,reversed:yb,stacks:$a});for(Ac in Vc)jb(T,Ac,Vc[Ac]);bb()}function c(){function m(w,I,J,C){if(!r[w]){I=M.text(I,W+va-20,ga+30,a.toolbar.itemStyle,0,
"right").on("click",C).attr({zIndex:20}).add();r[w]=I}}function i(w){ac(r[w].element);r[w]=null}var r={};return{add:m,remove:i}}function d(m){function i(aa,t){xa=ja?aa:(2*xa+aa)/3;bb=ja?t:(bb+t)/2;Ha.translate(xa,bb);Bc=Za(aa-xa)>1||Za(t-bb)>1?function(){i(aa,t)}:null}function r(){ja=true;Ha.hide()}function w(aa){var t=aa.series,v=m.borderColor||aa.color||t.color||"#606060",D,Q;Q=aa.tooltipText;D=aa.tooltipPos;I=t;t=D?D[0]:ma?va-aa.plotY:aa.plotX;aa=D?D[1]:ma?oa-aa.plotX:aa.plotY;D=Qb(t,aa);if(Q===
false||!D)r();else{if(ja){Ha.show();ja=false}qb.attr({text:Q});Q=qb.getBBox();Fa=Q.width;wa=Q.height;Xa.attr({width:Fa+2*la,height:wa+2*la,stroke:v});v=t-Fa+W-25;t=aa-wa+ga+10;if(v<7){v=7;t-=20}if(t<5)t=5;else if(t+wa>za)t=za-wa-5;i(Z(v-ta),Z(t-ta))}}var I,J=m.borderWidth,C=m.style,la=parseInt(C.padding,10),ta=J+la,ja=true,Fa,wa,xa=0,bb=0;C.padding=0;var Ha=M.g("tooltip").attr({zIndex:8}).add(),Xa=M.rect(ta,ta,0,0,m.borderRadius,J).attr({fill:m.backgroundColor,"stroke-width":J}).add(Ha).shadow(m.shadow),
qb=M.text("",la+ta,parseInt(C.fontSize,10)+la+ta).attr({zIndex:1}).css(C).add(Ha);return{refresh:w,hide:r}}function e(m,i){function r(t){t=t||kb.event;if(!t.target)t.target=t.srcElement;if(t.type!="mousemove"||kb.opera)Rb=gd(Qa);if(t.layerX===Ta)if(qc){t.layerX=t.x;t.layerY=t.y}else{t.layerX=t.pageX-Rb.x;t.layerY=t.pageY-Rb.y}return t}function w(t){var v={xAxis:[],yAxis:[]};p(Ra,function(D){var Q=D.translate,L=D.isXAxis,ha=ma?!L:L;v[L?"xAxis":"yAxis"].push({axis:D,value:Q(ha?t.layerX-W:oa-t.layerY+
ga,true)})});return v}function I(t){var v=m.hoverPoint,D=m.hoverSeries;if(D&&D.tracker)(t=D.tooltipPoints[ma?t.layerY:t.layerX-W])&&t!=v&&t.onMouseOver()}function J(){var t=m.hoverSeries,v=m.hoverPoint;v&&v.onMouseOut();t&&t.onMouseOut();Cc&&Cc.hide()}function C(){if(xa){var t={xAxis:[],yAxis:[]},v=xa.getBBox(),D=v.x-W,Q=v.y-ga;if(wa){p(Ra,function(L){var ha=L.translate,V=L.isXAxis,$a=ma?!V:V,T=ha($a?D:oa-Q-v.height,true);ha=ha($a?D+v.width:oa-Q,true);t[V?"xAxis":"yAxis"].push({axis:L,min:Kb(T,ha),
max:sb(T,ha)})});ya(m,"selection",t,Dc)}xa=xa.destroy()}m.mouseIsDown=Ec=wa=false}function la(){var t=true;Qa.onmousedown=function(v){v=r(v);v.preventDefault&&v.preventDefault();m.mouseIsDown=Ec=true;ja=v.layerX;Fa=v.layerY;if(hc&&(Ha||Xa))xa||(xa=M.rect(W,ga,qb?1:va,aa?1:oa,0).attr({fill:"rgba(69,114,167,0.25)",zIndex:7}).add())};Qa.onmousemove=function(v){v=r(v);v.returnValue=false;var D=v.layerX,Q=v.layerY,L=!Qb(D-W,Q-ga);if(Ec){wa=Math.sqrt(Math.pow(ja-D,2)+Math.pow(Fa-Q,2))>10;if(qb){v=D-ja;
xa.attr({width:Za(v),x:(v>0?0:v)+ja})}if(aa){Q=Q-Fa;xa.attr({height:Za(Q),y:(Q>0?0:Q)+Fa})}}else L||I(v);if(L&&!t){J();C()}t=L;return false};Qa.onmouseup=function(){C()};Qa.onclick=function(v){var D=m.hoverPoint;v=r(v);v.cancelBubble=true;if(!wa)if(D&&na(v.target,"isTracker")){var Q=D.plotX,L=D.plotY;R(D,{pageX:Rb.x+W+(ma?va-L:Q),pageY:Rb.y+ga+(ma?oa-Q:L)});ya(m.hoverSeries,"click",R(v,{point:D}));D.firePointEvent("click",v)}else{R(v,w(v));Qb(v.layerX-W,v.layerY-ga)&&ya(m,"click",v)}wa=false}}function ta(){m.trackerGroup=
Fc=M.g("tracker");ma&&Fc.attr({width:m.plotWidth,height:m.plotHeight}).invert();Fc.attr({zIndex:9}).translate(W,ga).add()}var ja,Fa,wa,xa,bb=E.zoomType,Ha=/x/.test(bb),Xa=/y/.test(bb),qb=Ha&&!ma||Xa&&ma,aa=Xa&&!ma||Ha&&ma;ta();if(i.enabled)m.tooltip=Cc=d(i);la();Wc=setInterval(function(){Bc&&Bc()},32);R(this,{zoomX:Ha,zoomY:Xa,resetTracker:J})}function f(m){var i=m.type||E.defaultSeriesType,r=cb[i],w=x.hasRendered;if(w)if(ma&&i=="column")r=cb.bar;else if(!ma&&i=="bar")r=cb.column;i=new r;i.init(x,
m);if(!w&&i.inverted)ma=true;if(i.isCartesian)hc=i.isCartesian;sa.push(i);return i}function g(m,i){var r;i=A(i,true);ya(x,"addSeries",{options:m},function(){r=f(m);r.isDirty=true;x.isDirty=true;i&&x.redraw()});return r}function j(){E.alignTicks!==false&&p(Ra,function(m){m.adjustTickAmount()})}function h(){for(var m=x.isDirty,i,r=sa.length,w=r,I;w--;){I=sa[w];if(I.isDirty&&I.options.stacking){i=true;break}}if(i)for(w=r;w--;){I=sa[w];if(I.options.stacking)I.isDirty=true}p(sa,function(J){if(J.isDirty){J.cleanData();
J.getSegments();if(J.options.legendType=="point")m=true}});Mb=null;if(hc){p(Ra,function(J){J.setScale()});j();p(Ra,function(J){J.isDirty&&J.redraw()})}p(sa,function(J){J.isDirty&&J.visible&&J.redraw()});if(m&&Gc.renderLegend){Gc.renderLegend();x.isDirty=false}Nb&&Nb.resetTracker&&Nb.resetTracker();ya(x,"redraw")}function l(){var m=a.loading;if(!Cb){Cb=Da(xb,{className:"highcharts-loading"},R(m.style,{left:W+Ia,top:ga+Ia,width:va+Ia,height:oa+Ia,zIndex:10,display:db}),Qa);Da("span",{innerHTML:a.lang.loading},
m.labelStyle,Cb)}if(!Hc){Ua(Cb,{opacity:0,display:""});Sb(Cb,{opacity:m.style.opacity},{duration:m.showDuration});Hc=true}}function n(){Sb(Cb,{opacity:0},{duration:a.loading.hideDuration,complete:function(){Ua(Cb,{display:db})}});Hc=false}function u(m){var i,r,w;for(i=0;i<Ra.length;i++)if(Ra[i].options.id==m)return Ra[i];for(i=0;i<sa.length;i++)if(sa[i].options.id==m)return sa[i];for(i=0;i<sa.length;i++){w=sa[i].data;for(r=0;r<w.length;r++)if(w[r].id==m)return w[r]}return null}function y(){var m=
a.xAxis||{},i=a.yAxis||{},r;m=nc(m);p(m,function(w,I){w.index=I;w.isX=true});i=nc(i);p(i,function(w,I){w.index=I});Ra=m.concat(i);x.xAxis=[];x.yAxis=[];Ra=Db(Ra,function(w){r=new b(x,w);x[r.isXAxis?"xAxis":"yAxis"].push(r);return r});j()}function ca(){var m=[];p(sa,function(i){m=m.concat(ic(i.data,function(r){return r.selected}))});return m}function Ba(){return ic(sa,function(m){return m.selected})}function O(){var m=a.title,i=m.align,r=a.subtitle,w=r.align,I={left:0,center:Ma/2,right:Ma};m&&m.text&&
M.text(m.text,I[i]+m.x,m.y,m.style,0,i).attr({"class":"highcharts-title"}).add();r&&r.text&&M.text(r.text,I[w]+r.x,r.y,r.style,0,w).attr({"class":"highcharts-subtitle"}).add()}function ea(){lb=E.renderTo;Xc=Eb+Ic++;if(typeof lb=="string")lb=Ea.getElementById(lb);lb.innerHTML="";if(!lb.offsetWidth){vb=lb.cloneNode(0);Ua(vb,{position:Tb,top:"-9999px",display:""});Ea.body.appendChild(vb)}var m=(vb||lb).offsetHeight;Ma=E.width||(vb||lb).offsetWidth||600;za=E.height||(m>ga+Ab?m:0)||400;Qa=Da(xb,{className:"highcharts-container"+
(E.className?" "+E.className:""),id:Xc},R({position:Yc,overflow:Fb,width:Ma+Ia,height:za+Ia,textAlign:"left"},E.style),vb||lb);x.renderer=M=E.renderer=="SVG"?new Ub(Qa,Ma,za):new Zc(Qa,Ma,za)}function mb(){var m,i=a.labels,r=a.credits,w=E.borderWidth||0,I=E.backgroundColor,J=E.plotBackgroundColor,C=E.plotBackgroundImage;m=2*w+(E.shadow?8:0);if(w||I)M.rect(m/2,m/2,Ma-m,za-m,E.borderRadius,w).attr({stroke:E.borderColor,"stroke-width":w,fill:I||db}).add().shadow(E.shadow);J&&M.rect(W,ga,va,oa,0).attr({fill:J}).add().shadow(E.plotShadow);
C&&M.image(C,W,ga,va,oa).add();E.plotBorderWidth&&M.rect(W,ga,va,oa,0,E.plotBorderWidth).attr({"class":"plot-border",stroke:E.plotBorderColor,"stroke-width":E.plotBorderWidth,zIndex:4}).add();hc&&p(Ra,function(la){la.render()});O();i.items&&p(i.items,function(){var la=R(i.style,this.style),ta=parseInt(la.left,10)+W,ja=parseInt(la.top,10)+ga+12;delete la.left;delete la.top;M.text(this.html,ta,ja,la).attr({zIndex:2}).add()});p(sa,function(la){la.render()});Gc=x.legend=new md(x);if(!x.toolbar)x.toolbar=
c(x);r.enabled&&!x.credits&&M.text(r.text,Ma-10,za-5,r.style,0,"right").on("click",function(){location.href=r.href}).attr({zIndex:8}).add();x.hasRendered=true;if(vb){lb.appendChild(Qa);ac(vb)}}function Ja(){var m=sa.length;Gb(kb,"unload",Ja);Gb(x);for(p(Ra,function(i){Gb(i)});m--;)sa[m].destroy();Qa.innerHTML="";Qa=null;clearInterval(Wc);for(m in x)delete x[m]}function jc(){y();p(sa,function(m){m.translate();m.setTooltipPoints()});x.render=mb;mb();ya(x,"load")}gc=ka(gc,ra.xAxis);zc=ka(zc,ra.yAxis);
ra.xAxis=ra.yAxis=null;a=ka(ra,a);var E=a.chart,ua=E.margin;ua=typeof ua=="number"?[ua,ua,ua,ua]:ua;var ga=A(E.marginTop,ua[0]),vc=A(E.marginRight,ua[1]),Ab=A(E.marginBottom,ua[2]),W=A(E.marginLeft,ua[3]),lb,vb,Qa,Xc,Ma,za,x=this;ua=E.events;var Vb,Jc,Qb,Cc,Ec,Cb,Hc,oa,va,Nb,Fc,Gc,Rb,hc=E.showAxes,Ra=[],Mb,sa=[],ma,M,Bc,Wc,Dc,$c,md=function(m){function i(q,N){var F=q.legendItem,K=q.legendLine,S=q.legendSymbol,Aa=Ha.color,Pb=N?C.itemStyle.color:Aa;q=N?q.color:Aa;F&&F.attr({fill:Pb});K&&K.attr({stroke:q});
S&&S.attr({stroke:q,fill:q})}function r(q,N,F){var K=q.legendItem,S=q.legendLine,Aa=q.legendSymbol;q=q.checkbox;K&&K.attr({x:N,y:F});S&&S.translate(N,F-4);Aa&&Aa.translate(N,F);if(q){q.x=N;q.y=F}}function w(q){for(var N=Fa.length,F=q.checkbox;N--;)if(Fa[N]==q){Fa.splice(N,1);break}p(["legendItem","legendLine","legendSymbol"],function(K){q[K]&&q[K].destroy()});F&&ac(q.checkbox)}function I(q){var N,F,K=q.legendItem;F=q.series||q;if(!K){F=/^(bar|pie|area|column)$/.test(F.type);q.legendItem=K=M.text(C.labelFormatter.call(q),
0,0).css(xa).on("mouseover",function(){q.setState(ob);K.css(bb)}).on("mouseout",function(){K.css(q.visible?xa:Ha);q.setState()}).on("click",function(){var S="legendItemClick",Aa=function(){q.setVisible()};q.firePointEvent?q.firePointEvent(S,null,Aa):ya(q,S,null,Aa)}).attr({zIndex:2}).add(T);if(!F&&q.options&&q.options.lineWidth)q.legendLine=M.path([gb,-ta-ja,0,Na,-ja,0]).attr({"stroke-width":q.options.lineWidth,zIndex:2}).add(T);if(F)N=M.rect(-ta-ja,-11,ta,12,2).attr({"stroke-width":0,zIndex:3}).add(T);
else if(q.options&&q.options.marker&&q.options.marker.enabled)N=M.symbol(q.symbol,-ta/2-ja,-4,q.options.marker.radius).attr(q.pointAttr[Ka]).attr({zIndex:3}).add(T);q.legendSymbol=N;i(q,q.visible);if(q.options&&q.options.showCheckbox){q.checkbox=Da("input",{type:"checkbox",checked:q.selected,defaultChecked:q.selected},C.itemCheckboxStyle,Qa);jb(q.checkbox,"click",function(S){S=S.target;ya(q,"checkboxClick",{checked:S.checked},function(){q.select()})})}}r(q,D,Q);N=K.getBBox();L=Q;q.legendItemWidth=
N=C.itemWidth||ta+ja+N.width+qb;if(la){D+=N;ib=Wa||sb(D-v,ib);if(D-v+N>(Wa||Ma-2*Xa-v)){D=v;Q+=aa}}else{Q+=aa;ib=Wa||sb(N,ib)}Fa.push(q)}function J(){D=v;Q=t;L=ib=0;T||(T=M.g("legend").attr({zIndex:7}).add());zb&&fb.reverse();p(fb,function(S){if(S.options.showInLegend){S=S.options.legendType=="point"?S.data:[S];p(S,I)}});zb&&fb.reverse();nb=Wa||ib;La=L-t+aa;if(V||$a){nb+=2*Xa;La+=2*Xa;if(ha)ha.attr({height:La,width:nb});else ha=M.rect(0,0,nb,La,C.borderRadius,V||0).attr({stroke:C.borderColor,"stroke-width":V||
0,fill:$a||db}).add(T).shadow(C.shadow)}for(var q=["left","right","top","bottom"],N,F=4;F--;){N=q[F];if(wa[N]&&wa[N]!="auto"){C[F<2?"align":"verticalAlign"]=N;C[F<2?"x":"y"]=parseInt(wa[N],10)*(F%2?-1:1)}}var K=Jc(R({width:nb,height:La},C));T.translate(K.x,K.y);p(Fa,function(S){var Aa=S.checkbox;Aa&&Ua(Aa,{left:K.x+S.legendItemWidth+Aa.x-40+Ia,top:K.y+Aa.y-11+Ia})})}var C=m.options.legend;if(C.enabled){var la=C.layout=="horizontal",ta=C.symbolWidth,ja=C.symbolPadding,Fa=[],wa=C.style,xa=C.itemStyle,
bb=C.itemHoverStyle,Ha=C.itemHiddenStyle,Xa=parseInt(wa.padding,10),qb=20,aa=C.lineHeight||16,t=18,v=4+Xa+ta+ja,D,Q,L,ha,V=C.borderWidth,$a=C.backgroundColor,T,ib,Wa=C.width,nb,La,fb=m.series,zb=C.reversed;J();return{colorizeItem:i,destroyItem:w,renderLegend:J}}};Qb=function(m,i){var r=0,w=0;return m>=r&&m<=r+va&&i>=w&&i<=w+oa};$c=function(){ya(x,"selection",{resetSelection:true},Dc);x.toolbar.remove("zoom")};Dc=function(m){var i=ra.lang;x.toolbar.add("zoom",i.resetZoom,i.resetZoomTitle,$c);!m||m.resetSelection?
p(Ra,function(r){r.setExtremes(null,null,false)}):p(m.xAxis.concat(m.yAxis),function(r){var w=r.axis;if(x.tracker[w.isXAxis?"zoomX":"zoomY"])w.setExtremes(r.min,r.max,false)});h()};Jc=function(m){var i=m.align,r=m.verticalAlign,w=m.x||0,I=m.y||0,J={x:w||0,y:I||0};if(/^(right|center)$/.test(i))J.x=(Ma-m.width)/{right:1,center:2}[i]+w;if(/^(bottom|middle)$/.test(r))J.y=(za-m.height)/{bottom:1,middle:2}[r]+I;return J};ea();kc=rb=0;jb(kb,"unload",Ja);if(ua)for(Vb in ua)jb(x,Vb,ua[Vb]);x.options=a;x.series=
sa;x.container=Qa;x.chartWidth=Ma;x.chartHeight=za;x.plotWidth=va=Ma-W-vc;x.plotHeight=oa=za-ga-Ab;x.plotLeft=W;x.plotTop=ga;x.addSeries=g;x.destroy=Ja;x.get=u;x.getAlignment=Jc;x.getSelectedPoints=ca;x.getSelectedSeries=Ba;x.hideLoading=n;x.isInsidePlot=Qb;x.redraw=h;x.showLoading=l;p(a.series||[],function(m){f(m)});x.inverted=ma=A(ma,a.chart.inverted);x.plotSizeX=Vb=ma?oa:va;x.plotSizeY=Vb=ma?va:oa;x.tracker=Nb=new e(x,a.tooltip);jc()}function ad(a){var b=[],c=[],d;for(d=0;d<a.length;d++){b[d]=
a[d].plotX;c[d]=a[d].plotY}this.xdata=b;this.ydata=c;a=[];this.y2=[];var e=c.length;this.n=e;this.y2[0]=0;this.y2[e-1]=0;a[0]=0;for(d=1;d<e-1;d++){var f=b[d+1]-b[d-1];f=(b[d]-b[d-1])/f;var g=f*this.y2[d-1]+2;this.y2[d]=(f-1)/g;a[d]=(c[d+1]-c[d])/(b[d+1]-b[d])-(c[d]-c[d-1])/(b[d]-b[d-1]);a[d]=(6*a[d]/(b[d+1]-b[d-1])-f*a[d-1])/g}for(b=e-2;b>=0;b--)this.y2[b]=this.y2[b]*this.y2[b+1]+a[b]}var Ea=document,kb=window,Ga=Math,Z=Ga.round,hb=Ga.floor,sb=Ga.max,Kb=Ga.min,Za=Ga.abs,Hb=Ga.cos,Ib=Ga.sin,pa=navigator.userAgent,
qc=/msie/i.test(pa)&&!kb.opera,nd=/AppleWebKit/.test(pa),bd=kb.SVGAngle||Ea.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1"),rb,kc,od={},Ic=0,ab=1,bc,ra,fc,Ta,xb="div",Tb="absolute",Yc="relative",Fb="hidden",Eb="highcharts-",Wb="visible",Ia="px",db="none",gb="M",Na="L",cd="rgba(192,192,192,0.005)",Ka="",ob="hover",wb="select",Yb,rc,sc,tc,Ob,Zb,$b,Mc,Nc,uc,Oc,Pc,Ca=kb.HighchartsAdapter,qa=Ca||{},p=qa.each,ic=qa.grep,Db=qa.map,ka=qa.merge,pc=qa.hyphenate,jb=qa.addEvent,
Gb=qa.removeEvent,ya=qa.fireEvent,Sb=qa.animate,lc=qa.stop;qa=qa.getAjax;var cb={};if(!Ca&&kb.jQuery){var Ya=jQuery;p=function(a,b){for(var c=0,d=a.length;c<d;c++)if(b.call(a[c],a[c],c,a)===false)return c};ic=Ya.grep;Db=function(a,b){for(var c=[],d=0,e=a.length;d<e;d++)c[d]=b.call(a[d],a[d],d,a);return c};ka=function(){var a=arguments;return Ya.extend(true,null,a[0],a[1],a[2],a[3])};pc=function(a){return a.replace(/([A-Z])/g,function(b,c){return"-"+c.toLowerCase()})};jb=function(a,b,c){Ya(a).bind(b,
c)};Gb=function(a,b,c){try{Ya(a).unbind(b,c)}catch(d){}};ya=function(a,b,c,d){var e=Ya.Event(b),f="detached"+b;R(e,c);if(a[b]){a[f]=a[b];a[b]=null}Ya(a).trigger(e);if(a[f]){a[b]=a[f];a[f]=null}d&&!e.isDefaultPrevented()&&d(e)};Sb=function(a,b,c){a=Ya(a);a.stop();a.animate(b,c)};lc=function(a){Ya(a).stop()};qa=function(a,b){Ya.get(a,null,b)};Ya.extend(Ya.easing,{easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c}});var pd=jQuery.fx.step._default,qd=jQuery.fx.prototype.cur;Ya.fx.step._default=
function(a){var b=a.elem;b.attr?b.attr(a.prop,a.now):pd.apply(this,arguments)};Ya.fx.prototype.cur=function(){var a=this.elem;return a=a.attr?a.attr(this.prop):qd.apply(this,arguments)}}else if(!Ca&&kb.MooTools){p=$each;Db=function(a,b){return a.map(b)};ic=function(a,b){return a.filter(b)};ka=$merge;pc=function(a){return a.hyphenate()};jb=function(a,b,c){if(typeof b=="string"){if(b=="unload")b="beforeunload";if(!a.addEvent)if(a.nodeName)a=$(a);else R(a,new Events);a.addEvent(b,c)}};Gb=function(a,
b,c){if(b){if(b=="unload")b="beforeunload";a.removeEvent(b,c)}};ya=function(a,b,c,d){b=new Event({type:b,target:a});b=R(b,c);b.preventDefault=function(){d=null};a.fireEvent&&a.fireEvent(b.type,b);d&&d(b)};Sb=function(a,b,c){var d=a.attr;if(d&&!a.setStyle){a.setStyle=a.getStyle=a.attr;a.$family=a.uid=true}lc(a);c=new Fx.Morph(d?a:$(a),R(c,{transition:Fx.Transitions.Quad.easeInOut}));c.start(b);a.fx=c};lc=function(a){a.fx&&a.fx.cancel()};qa=function(a,b){(new Request({url:a,method:"get",onSuccess:b})).send()}}Ca=
{enabled:true,align:"center",x:0,y:15,style:{color:"#666",fontSize:"11px"}};ra={colors:["#4572A7","#AA4643","#89A54E","#80699B","#3D96AE","#DB843D","#92A8CD","#A47D7C","#B5CA92"],symbols:["circle","diamond","square","triangle","triangle-down"],lang:{loading:"Loading...",months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],decimalPoint:".",resetZoom:"Reset zoom",
resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","},global:{useUTC:true},chart:{margin:[50,50,90,80],borderColor:"#4572A7",borderRadius:5,defaultSeriesType:"line",ignoreHiddenSeries:true,style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:"12px"},backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0"},title:{text:"Chart title",x:0,y:20,align:"center",style:{color:"#3E576F",fontSize:"16px"}},subtitle:{text:"",x:0,y:40,align:"center",style:{color:"#6D869F"}},
plotOptions:{line:{allowPointSelect:false,showCheckbox:false,animation:true,events:{},lineWidth:2,shadow:true,marker:{enabled:true,lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{hover:{},select:{fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}}},point:{events:{}},dataLabels:ka(Ca,{enabled:false,y:-6,formatter:function(){return this.y}}),showInLegend:true,states:{hover:{lineWidth:3,marker:{}},select:{marker:{}}},stickyTracking:true}},labels:{style:{position:Tb,color:"#3E576F"}},legend:{enabled:true,
align:"center",layout:"horizontal",labelFormatter:function(){return this.name},borderWidth:1,borderColor:"#909090",borderRadius:5,shadow:false,style:{padding:"5px"},itemStyle:{cursor:"pointer",color:"#3E576F"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#C0C0C0"},itemCheckboxStyle:{position:Tb,width:"13px",height:"13px"},symbolWidth:16,symbolPadding:5,verticalAlign:"bottom",x:15,y:-15},loading:{hideDuration:100,labelStyle:{fontWeight:"bold",position:Yc,top:"1em"},showDuration:100,style:{position:Tb,
backgroundColor:"white",opacity:0.5,textAlign:"center"}},tooltip:{enabled:true,formatter:function(){var a=this,b=a.series,c=b.xAxis,d=a.x;return"<b>"+(a.point.name||b.name)+"</b><br/>"+(U(d)?"X value: "+(c&&c.options.type=="datetime"?fc(null,d):d)+"<br/>":"")+"Y value: "+a.y},backgroundColor:"rgba(255, 255, 255, .85)",borderWidth:2,borderRadius:5,shadow:true,snap:10,style:{color:"#333333",fontSize:"12px",padding:"5px",whiteSpace:"nowrap"}},toolbar:{itemStyle:{color:"#4572A7",cursor:"pointer"}},credits:{enabled:true,
text:"Highcharts.com",href:"http://www.highcharts.com",style:{cursor:"pointer",color:"#909090",fontSize:"10px"}}};var gc={dateTimeLabelFormats:{second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},endOnTick:false,gridLineColor:"#C0C0C0",labels:Ca,lineColor:"#C0D0E0",lineWidth:1,max:null,min:null,minPadding:0.01,maxPadding:0.01,maxZoom:null,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",
minorTickWidth:1,showFirstLabel:true,showLastLabel:false,startOfWeek:1,startOnTick:false,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{align:"middle",margin:35,style:{color:"#6D869F",fontWeight:"bold"}},type:"linear"},zc=ka(gc,{endOnTick:true,gridLineWidth:1,tickPixelInterval:72,showLastLabel:true,labels:{align:"right",x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:true,tickWidth:0,title:{margin:40,rotation:270,
text:"Y-values"}}),ld={labels:{align:"right",x:-8,y:3},title:{rotation:270}},kd={labels:{align:"left",x:8,y:3},title:{rotation:90}},Uc={labels:{align:"center",x:0,y:14},title:{rotation:0}},jd=ka(Uc,{labels:{y:-5}});Ca=ra.plotOptions;qa=Ca.line;Ca.spline=ka(qa);Ca.scatter=ka(qa,{lineWidth:0,states:{hover:{lineWidth:0}}});Ca.area=ka(qa,{});Ca.areaspline=ka(Ca.area);Ca.column=ka(qa,{borderColor:"#FFFFFF",borderWidth:1,borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,states:{hover:{brightness:0.1,
shadow:false},select:{color:"#C0C0C0",borderColor:"#000000",shadow:false}}});Ca.bar=ka(Ca.column,{dataLabels:{align:"left",x:5,y:0}});Ca.pie=ka(qa,{borderColor:"#FFFFFF",borderWidth:1,center:["50%","50%"],colorByPoint:true,legendType:"point",marker:null,size:"90%",slicedOffset:10,states:{hover:{brightness:0.1,shadow:false}}});Lc();var Jb=function(a){function b(j){if(g=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]?(?:\.[0-9]+)?)\s*\)/.exec(j))f=[parseInt(g[1],10),parseInt(g[2],
10),parseInt(g[3],10),parseFloat(g[4],10)];else if(g=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(j))f=[parseInt(g[1],16),parseInt(g[2],16),parseInt(g[3],16),1]}function c(j){return j=f&&!isNaN(f[0])?j=="rgb"?"rgb("+f[0]+","+f[1]+","+f[2]+")":j=="a"?f[3]:"rgba("+f.join(",")+")":a}function d(j){if(typeof j=="number"&&j!==0)for(var h=0;h<3;h++){f[h]+=parseInt(j*255,10);if(f[h]<0)f[h]=0;if(f[h]>255)f[h]=255}return this}function e(j){f[3]=j;return this}var f=[],g;b(a);return{get:c,brighten:d,
setOpacity:e}};fc=function(a,b,c){function d(y){return y.toString().replace(/^([0-9])$/,"0$1")}if(!U(b)||isNaN(b))return"Invalid date";a=A(a,"%Y-%m-%d %H:%M:%S");b=new Date(b*ab);var e=b[sc](),f=b[tc](),g=b[Ob](),j=b[Zb](),h=b[$b](),l=ra.lang,n=l.weekdays;l=l.months;b={a:n[f].substr(0,3),A:n[f],d:d(g),e:g,b:l[j].substr(0,3),B:l[j],m:d(j+1),y:h.toString().substr(2,2),Y:h,H:d(e),I:d(e%12||12),l:e%12||12,M:d(b[rc]()),p:e<12?"AM":"PM",P:e<12?"am":"pm",S:d(b.getSeconds())};for(var u in b)a=a.replace("%"+
u,b[u]);return c?a.substr(0,1).toUpperCase()+a.substr(1):a};cc.prototype={init:function(a,b){this.element=Ea.createElementNS("http://www.w3.org/2000/svg",b);this.renderer=a},animate:function(a,b){Sb(this,a,b)},attr:function(a,b){var c,d,e,f=this.element,g=f.nodeName,j=this.renderer,h,l=this.shadows,n,u=this;if(typeof a=="string"&&U(b)){c=a;a={};a[c]=b}if(typeof a=="string"){c=a;if(g=="circle")c={x:"cx",y:"cy"}[c]||c;else if(c=="strokeWidth")c="stroke-width";u=parseFloat(na(f,c)||this[c]||0)}else for(c in a){b=
a[c];if(c=="d"){if(typeof b!="string")b=b.join(" ")}else if(c=="x"&&g=="text")for(d=0;d<f.childNodes.length;d++){e=f.childNodes[d];na(e,"x")==na(f,"x")&&na(e,"x",b)}else if(c=="fill")b=j.color(b,f,c);else if(g=="circle")c={x:"cx",y:"cy"}[c]||c;else if(c=="translateX"||c=="translateY"){this[c]=b;this.updateTransform();h=true}else if(c=="stroke")b=j.color(b,f,c);else if(c=="isTracker")this[c]=b;if(c=="strokeWidth")c="stroke-width";if(nd&&c=="stroke-width"&&b===0)b=1.0E-6;if(this.symbolName&&/^(x|y|r|start|end|innerR)/.test(c)){if(!n){this.symbolAttr(a);
n=true}h=true}if(l&&/^(width|height|visibility|x|y|d)$/.test(c))for(d=l.length;d--;)na(l[d],c,b);if(c=="text")j.buildText(f,b);else h||na(f,c,b)}return u},symbolAttr:function(a){var b=this;b.x=A(a.x,b.x);b.y=A(a.y,b.y);b.r=A(a.r,b.r);b.start=A(a.start,b.start);b.end=A(a.end,b.end);b.width=A(a.width,b.width);b.height=A(a.height,b.height);b.innerR=A(a.innerR,b.innerR);b.attr({d:b.renderer.symbols[b.symbolName](b.x,b.y,b.r,{start:b.start,end:b.end,width:b.width,height:b.height,innerR:b.innerR})})},clip:function(a){return this.attr("clip-path",
"url("+this.renderer.url+"#"+a.id+")")},css:function(a){var b=this;if(a&&a.color)a.fill=a.color;a=R(b.styles,a);b.attr({style:oc(a)});b.styles=a;return b},on:function(a,b){this.element["on"+a]=b;return this},translate:function(a,b){var c=this;c.translateX=a;c.translateY=b;c.updateTransform();return c},invert:function(){var a=this;a.inverted=true;a.updateTransform();return a},updateTransform:function(){var a=this,b=a.translateX||0,c=a.translateY||0,d=a.inverted,e=[];if(d){b+=a.attr("width");c+=a.attr("height")}if(b||
c)e.push("translate("+b+","+c+")");d&&e.push("rotate(90) scale(-1,1)");e.length&&na(a.element,"transform",e.join(" "))},toFront:function(){var a=this.element;a.parentNode.appendChild(a);return this},getBBox:function(){return this.element.getBBox()},show:function(){return this.attr({visibility:Wb})},hide:function(){return this.attr({visibility:Fb})},add:function(a){var b=a?a.element:this.renderer.box,c=b.childNodes,d=this.element,e=na(d,"zIndex"),f,g;this.parentInverted=a&&a.inverted;for(g=0;g<c.length;g++){a=
c[g];f=na(a,"zIndex");if(a!=d&&(f>e||!U(e)&&U(f))){b.insertBefore(d,a);return this}}b.appendChild(d);return this},destroy:function(){var a=this,b=a.element,c=a.shadows,d=b.parentNode,e;b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=null;lc(a);d&&d.removeChild(b);c&&p(c,function(f){(d=f.parentNode)&&d.removeChild(f)});for(e in a)delete a[e];return null},empty:function(){for(var a=this.element,b=a.childNodes,c=b.length;c--;)a.removeChild(b[c])},shadow:function(a){var b=[],c,d=this.element,e=this.parentInverted?
"(-1,-1)":"(1,1)";if(a){for(a=1;a<=3;a++){c=d.cloneNode(0);na(c,{isShadow:"true",stroke:"rgb(0, 0, 0)","stroke-opacity":0.05*a,"stroke-width":7-2*a,transform:"translate"+e,fill:db});d.parentNode.insertBefore(c,d);b.push(c)}this.shadows=b}return this}};var Ub=function(){this.init.apply(this,arguments)};Ub.prototype={init:function(a,b,c){var d=Ea.createElementNS("http://www.w3.org/2000/svg","svg"),e=location;na(d,{width:b,height:c,xmlns:"http://www.w3.org/2000/svg",version:"1.1"});a.appendChild(d);
this.Element=cc;this.box=d;this.url=e.href.replace(e.hash,"");this.defs=this.createElement("defs").add()},createElement:function(a){var b=new this.Element;b.init(this,a);return b},buildText:function(a,b){b=b.toString().replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split("<br/>");var c=a.childNodes,d=/style="([ 0-9a-z:;\-]+)"/,e=/href="([^"]+)"/,f=na(a,"x"),g;for(g=
c.length-1;g>=0;g--)a.removeChild(c[g]);p(b,function(j,h){var l=0;j=j.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");j=j.split("|||");p(j,function(n){if(n!==""){var u={},y=Ea.createElementNS("http://www.w3.org/2000/svg","tspan");d.test(n)&&na(y,"style",n.match(d)[1].replace(/(;| |^)color([ :])/,"$1fill$2"));if(e.test(n)){na(y,"onclick",'location.href="'+n.match(e)[1]+'"');Ua(y,{cursor:"pointer"})}n=n.replace(/<(.|\n)*?>/g,"");y.appendChild(Ea.createTextNode(n));if(l)u.dx=3;else u.x=
f;if(h&&!l)u.dy=16;na(y,u);a.appendChild(y);l++}})})},crispLine:function(a,b){if(a[1]==a[4])a[1]=a[4]=Z(a[1])+b%2/2;if(a[2]==a[5])a[2]=a[5]=Z(a[2])+b%2/2;return a},path:function(a){return this.createElement("path").attr({d:a,fill:db})},circle:function(a,b,c){a=typeof a=="object"?a:{x:a,y:b,r:c};return this.createElement("circle").attr(a)},arc:function(a,b,c,d,e,f){if(typeof a=="object"){b=a.y;c=a.r;d=a.innerR;e=a.start;f=a.end;a=a.x}return this.symbol("arc",a||0,b||0,c||0,{innerR:d||0,start:e||0,
end:f||0})},rect:function(a,b,c,d,e,f){if(arguments.length>1){var g=(f||0)%2/2;a=Z(a||0)+g;b=Z(b||0)+g;c=Z((c||0)-2*g);d=Z((d||0)-2*g)}g=typeof a=="object"?a:{x:a,y:b,width:sb(c,0),height:sb(d,0)};return this.createElement("rect").attr(R(g,{rx:e||g.r,ry:e||g.r,fill:db}))},g:function(a){return this.createElement("g").attr(U(a)&&{"class":Eb+a})},image:function(a,b,c,d,e){b=this.createElement("image").attr({x:b,y:c,width:d,height:e,preserveAspectRatio:db});b.element.setAttributeNS("http://www.w3.org/1999/xlink",
"href",a);return b},symbol:function(a,b,c,d,e){var f,g=this.symbols[a];g=g&&g(b,c,d,e);var j=/^url\((.*?)\)$/;if(g){f=this.path(g);R(f,{symbolName:a,x:b,y:c,r:d});e&&R(f,e)}else if(j.test(a)){a=a.match(j)[1];f=this.image(a).attr({visibility:Fb});Da("img",{onload:function(){var h=this;h=od[h.src]||[h.width,h.height];f.attr({x:Z(b-h[0]/2)+Ia,y:Z(c-h[1]/2)+Ia,width:h[0],height:h[1],visibility:"inherit"})},src:a})}else f=this.circle(b,c,d);return f},symbols:{square:function(a,b,c){c=0.707*c;return[gb,
a-c,b-c,Na,a+c,b-c,a+c,b+c,a-c,b+c,"Z"]},triangle:function(a,b,c){return[gb,a,b-1.33*c,Na,a+c,b+0.67*c,a-c,b+0.67*c,"Z"]},"triangle-down":function(a,b,c){return[gb,a,b+1.33*c,Na,a-c,b-0.67*c,a+c,b-0.67*c,"Z"]},diamond:function(a,b,c){return[gb,a,b-c,Na,a+c,b,a,b+c,a-c,b,"Z"]},arc:function(a,b,c,d){var e=Math.PI,f=d.start,g=d.end-1.0E-6,j=d.innerR,h=Hb(f),l=Ib(f),n=Hb(g);g=Ib(g);d=d.end-f<e?0:1;return[gb,a+c*h,b+c*l,"A",c,c,0,d,1,a+c*n,b+c*g,Na,a+j*n,b+j*g,"A",j,j,0,d,0,a+j*h,b+j*l,"Z"]}},clipRect:function(a,
b,c,d){var e=Eb+Ic++,f=this.createElement("clipPath").attr({id:e}).add(this.defs);a=this.rect(a,b,c,d,0).add(f);a.id=e;return a},color:function(a,b,c){var d,e=/^rgba/;if(a&&a.linearGradient){var f=this;b="linearGradient";c=a[b];var g=Eb+Ic++,j,h,l;j=f.createElement(b).attr({id:g,gradientUnits:"userSpaceOnUse",x1:c[0],y1:c[1],x2:c[2],y2:c[3]}).add(f.defs);p(a.stops,function(n){if(e.test(n[1])){d=Jb(n[1]);h=d.get("rgb");l=d.get("a")}else{h=n[1];l=1}f.createElement("stop").attr({offset:n[0],"stop-color":h,
"stop-opacity":l}).add(j)});return"url("+this.url+"#"+g+")"}else if(e.test(a)){d=Jb(a);na(b,c+"-opacity",d.get("a"));return d.get("rgb")}else return a},text:function(a,b,c,d,e,f){d=d||{};f=f||"left";e=e||0;var g=d.color||"#000000",j=ra.chart.style;b=Z(A(b,0));c=Z(A(c,0));R(d,{fontFamily:d.fontFamily||j.fontFamily,fontSize:d.fontSize||j.fontSize});d=oc(d);a={x:b,y:c,text:a,fill:g,style:d.replace(/"/g,"'")};if(e||f!="left")a=R(a,{"text-anchor":{left:"start",center:"middle",right:"end"}[f],transform:"rotate("+
e+" "+b+" "+c+")"});return this.createElement("text").attr(a)}};var Kc;if(!bd){var rd=eb(cc,{init:function(a,b){var c=["<",b,' filled="f" stroked="f"'],d=["position: ",Tb,";"];if(b=="shape"||b==xb)d.push("left:0;top:0;width:10px;height:10px;");c.push(' style="',d.join(""),'"/>');if(b){c=b==xb||b=="span"||b=="img"?c.join(""):a.prepVML(c);this.element=Da(c)}this.renderer=a},add:function(a){var b=this,c=b.renderer,d=b.element,e=c.box;c=a&&a.inverted;a=a?a.element||a:e;if(c){c=a.style;Ua(d,{flip:"x",
left:parseInt(c.width,10)-10,top:parseInt(c.height,10)-10,rotation:-90})}a.appendChild(d);return b},attr:function(a,b){var c,d,e,f=this.element,g=f.style,j=f.nodeName,h=this.renderer,l=this.symbolName,n,u=this.shadows,y,ca=this;if(typeof a=="string"&&U(b)){c=a;a={};a[c]=b}if(typeof a=="string"){c=a;ca=c=="strokeWidth"||c=="stroke-width"?f.strokeweight:A(this[c],parseInt(g[{x:"left",y:"top"}[c]||c],10))}else for(c in a){d=a[c];y=false;if(l&&/^(x|y|r|start|end|width|height|innerR)/.test(c)){if(!n){this.symbolAttr(a);
n=true}y=true}else if(c=="d"){e=d.length;for(y=[];e--;)y[e]=typeof d[e]=="number"?Z(d[e]*10)-5:d[e]=="Z"?"x":d[e];d=y.join(" ")||"x";f.path=d;if(u)for(e=u.length;e--;)u[e].path=d;y=true}else if(c=="zIndex"||c=="visibility"){g[c]=d;y=true}else if(/^(width|height)$/.test(c)){g[c]=d;this.updateClipping&&this.updateClipping();y=true}else if(/^(x|y)$/.test(c)){if(c=="y"&&f.tagName=="SPAN"&&f.lineHeight)d-=f.lineHeight;g[{x:"left",y:"top"}[c]]=d}else if(c=="class")f.className=d;else if(c=="stroke"){d=h.color(d,
f,c);c="strokecolor"}else if(c=="stroke-width"||c=="strokeWidth"){f.stroked=d?true:false;c="strokeweight";if(typeof d=="number")d+=Ia}else if(c=="fill")if(j=="SPAN")g.color=d;else{f.filled=d!=db?true:false;d=h.color(d,f,c);c="fillcolor"}else if(c=="translateX"||c=="translateY"){this[c]=b;this.updateTransform();y=true}if(u&&c=="visibility")for(e=u.length;e--;)u[e].style[c]=d;if(c=="text")f.innerHTML=d;else if(!y)if(Ea.documentMode==8)f[c]=d;else na(f,c,d)}return ca},clip:function(a){var b=this,c=a.members,
d=c.length;c.push(b);b.destroyClip=function(){c.splice(d,1)};return b.css({clip:a.getCSS(b.inverted)})},css:function(a){var b=this;Ua(b.element,a);return b},destroy:function(){var a=this;a.destroyClip&&a.destroyClip();cc.prototype.destroy.apply(this)},empty:function(){var a=this.element;a=a.childNodes;for(var b=a.length,c;b--;){c=a[b];c.parentNode.removeChild(c)}},getBBox:function(){var a=this.element,b,c=a.offsetWidth,d=a.parentNode;c||Ea.body.appendChild(a);b={x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,
height:a.offsetHeight};c||(d?d.appendChild(a):Ea.body.removeChild(a));return b},on:function(a,b){this.element["on"+a]=function(){var c=kb.event;c.target=c.srcElement;b(c)};return this},updateTransform:function(){var a=this,b=a.translateX||0,c=a.translateY||0;if(b||c)a.css({left:b,top:c})},shadow:function(a){var b=[],c=this.element,d=this.renderer,e,f=c.style,g;if(a&&typeof c.path=="string"){for(a=1;a<=3;a++){g=['<shape isShadow="true" strokeweight="',7-2*a,'" filled="false" path="',c.path,'" coordsize="100,100" style="',
c.style.cssText,'" />'];e=Da(d.prepVML(g),null,{left:parseInt(f.left,10)+1,top:parseInt(f.top,10)+1});g=['<stroke color="black" opacity="',0.05*a,'"/>'];Da(d.prepVML(g),null,null,e);c.parentNode.insertBefore(e,c);b.push(e)}this.shadows=b}return this}});Kc=function(){this.init.apply(this,arguments)};Kc.prototype=ka(Ub.prototype,{isIE8:pa.indexOf("MSIE 8.0")>-1,init:function(a,b,c){this.box=Da(xb,null,{width:b+Ia,height:c+Ia},a);this.Element=rd;if(!Ea.namespaces.hcv){Ea.namespaces.add("hcv","urn:schemas-microsoft-com:vml");
Ea.createStyleSheet().cssText="hcv\\:fill, hcv\\:path, hcv\\:textpath, hcv\\:shape, hcv\\:stroke, hcv\\:line { behavior:url(#default#VML); display: inline-block; } "}},clipRect:function(a,b,c,d){var e=this.createElement();return R(e,{members:[],element:{style:{left:a,top:b,width:c,height:d}},getCSS:function(f){var g=e.element.style,j=g.top,h=g.left,l=h+g.width;g=j+g.height;return"rect("+(f?h:j)+"px,"+(f?g:l)+"px,"+(f?l:g)+"px,"+(f?j:h)+"px)"},updateClipping:function(){p(e.members,function(f){f.css({clip:e.getCSS(f.inverted)})})}})},
color:function(a,b,c){var d,e=/^rgba/;if(a&&a.linearGradient){var f,g;c=a.linearGradient;var j,h,l,n;p(a.stops,function(u,y){if(e.test(u[1])){d=Jb(u[1]);f=d.get("rgb");g=d.get("a")}else{f=u[1];g=1}if(y){l=f;n=g}else{j=f;h=g}});a=90-Ga.atan((c[3]-c[1])/(c[2]-c[0]))*180/Ga.PI;a=['<fill colors="0% ',j,",100% ",l,'" angle="',a,'" opacity="',n,'" o:opacity2="',h,'" type="gradient" focus="100%" />'];Da(this.prepVML(a),null,null,b)}else if(e.test(a)){d=Jb(a);a=["<",c,' opacity="',d.get("a"),'"/>'];Da(this.prepVML(a),
null,null,b);return d.get("rgb")}else return a},prepVML:function(a){var b="display:inline-block;behavior:url(#default#VML);",c=this.isIE8;a=a.join("");if(c){a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />');a=a.indexOf('style="')==-1?a.replace("/>",' style="'+b+'" />'):a.replace('style="','style="'+b)}else a=a.replace("<","<hcv:");return a},text:function(a,b,c,d,e,f){d=d||{};f=f||"left";e=e||0;var g=Z(parseInt(d.fontSize||12,10)*1.2),j=ra.chart.style;b=Z(b);c=Z(c);R(d,{color:d.color||
"#000000",whiteSpace:"nowrap",fontFamily:d.fontFamily||j.fontFamily,fontSize:d.fontSize||j.fontSize});if(e){j=(e||0)*Ga.PI*2/360;e=Hb(j);j=Ib(j);var h=10;g=g*0.3;var l=f=="left",n=f=="right",u=l?b:b-h*e;b=n?b:b+h*e;l=l?c:c-h*j;c=n?c:c+h*j;u+=g*j;b+=g*j;l-=g*e;c-=g*e;if(Za(u-b)<0.1)u+=0.1;if(Za(l-c)<0.1)l+=0.1;c=this.createElement("line").attr({from:u+", "+l,to:b+", "+c});e=c.element;Da("hcv:fill",{on:true,color:d.color},null,e);Da("hcv:path",{textpathok:true},null,e);Da('<hcv:textpath style="v-text-align:'+
f+";"+oc(d).replace(/"/g,"'")+'" on="true" string="'+a+'">',null,null,e)}else{c=this.createElement("span").attr({x:b,y:c-g,text:a});e=c.element;e.lineHeight=g;Ua(e,d);if(f!="left"){a=c.getBBox().width;Ua(e,{left:b-a/{right:1,center:2}[f]+Ia})}}return c},path:function(a){return this.createElement("shape").attr({coordsize:"100 100",d:a})},circle:function(a,b,c){return this.path(this.symbols.circle(a,b,c))},g:function(a){var b;if(a)b={className:Eb+a,"class":Eb+a};return a=this.createElement(xb).attr(b)},
image:function(a,b,c,d,e){return this.createElement("img").attr({src:a}).css({left:b,top:c,width:d,height:e})},rect:function(a,b,c,d,e,f){if(arguments.length>1){var g=(f||0)%2/2;a=Z(a||0)+g;b=Z(b||0)+g;c=Z((c||0)-2*g);d=Z((d||0)-2*g)}if(typeof a=="object"){b=a.y;c=a.width;d=a.height;e=a.r;a=a.x}return this.symbol("rect",a||0,b||0,e||0,{width:c||0,height:d||0})},symbol:function(a,b,c){var d;d=/^url\((.*?)\)$/;return d=d.test(a)?this.createElement("img").attr({onload:function(){var e=this,f=[e.width,
e.height];Ua(e,{left:Z(b-f[0]/2),top:Z(c-f[1]/2)})},src:a.match(d)[1]}):Ub.prototype.symbol.apply(this,arguments)},symbols:{arc:function(a,b,c,d){var e=d.start,f=d.end,g=f-e==2*Math.PI?f-0.0010:f,j=Hb(e),h=Ib(e),l=Hb(g);g=Ib(g);d=d.innerR;if(f-e===0)return["x"];return["wa",a-c,b-c,a+c,b+c,a+c*j,b+c*h,a+c*l,b+c*g,"at",a-d,b-d,a+d,b+d,a+d*l,b+d*g,a+d*j,b+d*h,"x","e"]},circle:function(a,b,c){return["wa",a-c,b-c,a+c,b+c,a+c,b,a+c,b,"e"]},rect:function(a,b,c,d){var e=d.width;d=d.height;var f=a+e,g=b+d;
c=Kb(c,e,d);return[gb,a+c,b,Na,f-c,b,"wa",f-2*c,b,f,b+2*c,f-c,b,f,b+c,Na,f,g-c,"wa",f-2*c,g-2*c,f,g,f,g-c,f-c,g,Na,a+c,g,"wa",a,g-2*c,a+2*c,g,a+c,g,a,g-c,Na,a,b+c,"wa",a,b,a+2*c,b+2*c,a,b+c,a+c,b,"x","e"]}}})}var Zc=bd?Ub:Kc,Xb=function(){};Xb.prototype={init:function(a,b){var c=this;c.series=a;c.applyOptions(b);c.pointAttr={};if(a.options.colorByPoint){a=ra.colors;if(!c.options)c.options={};c.color=c.options.color=c.color||a[rb++];if(rb>=a.length)rb=0}return c},applyOptions:function(a){var b=this,
c=b.series;if(typeof a=="number"||a===null)b.y=a;else if(typeof a=="object"&&typeof a.length!="number"){R(b,a);b.options=a}else if(typeof a[0]=="string"){b.name=a[0];b.y=a[1]}else if(typeof a[0]=="number"){b.x=a[0];b.y=a[1]}if(b.x===Ta)b.x=c.autoIncrement()},destroy:function(){var a=this,b;a==a.series.chart.hoverPoint&&a.onMouseOut();Gb(a);p(["graphic","tracker","group"],function(c){a[c]&&a[c].destroy()});a.legendItem&&a.series.chart.legend.destroyItem(a);for(b in a)a[b]=null},select:function(a,b){var c=
this,d=c.series;d=d.chart;c.selected=a=A(a,!c.selected);c.firePointEvent(a?"select":"unselect");c.setState(wb);b||p(d.getSelectedPoints(),function(e){if(e.selected&&e!=c){e.selected=false;e.setState(Ka);e.firePointEvent("unselect")}})},onMouseOver:function(){var a=this,b=a.series.chart,c=b.tooltip,d=b.hoverPoint;d&&d!=a&&d.onMouseOut();a.firePointEvent("mouseOver");c&&c.refresh(a);a.setState(ob);b.hoverPoint=a},onMouseOut:function(){var a=this;a.firePointEvent("mouseOut");a.setState(Ka);a.series.chart.hoverPoint=
null},update:function(a,b){var c=this,d=c.series;b=A(b,true);c.firePointEvent("update",{options:a},function(){c.applyOptions(a);d.isDirty=true;b&&d.chart.redraw()})},remove:function(a){var b=this,c=b.series,d=c.chart,e=c.data,f=e.length;a=A(a,true);b.firePointEvent("remove",null,function(){for(;f--;)if(e[f]==b){e.splice(f,1);break}b.destroy();c.isDirty=true;a&&d.redraw()})},firePointEvent:function(a,b,c){var d=this,e=this.series;e=e.options;if(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])this.importEvents();
if(a=="click"&&e.allowPointSelect)c=function(f){d.select(null,f.ctrlKey||f.metaKey||f.shiftKey)};ya(this,a,b,c)},importEvents:function(){if(!this.hasImportedEvents){var a=this,b=ka(a.series.options.point,a.options);b=b.events;var c;a.events=b;for(c in b)jb(a,c,b[c]);this.hasImportedEvents=true}},setState:function(a){var b=this,c=b.series,d=c.options.states,e=c.options.marker,f=e&&!e.enabled,g=(e=e&&e.states[a])&&e.enabled===false,j=c.chart,h=b.pointAttr;a||(a=Ka);if(!(b.selected&&a!=wb||d[a]&&d[a].enabled===
false||a&&(g||f&&!e.enabled)))if(a&&!b.graphic){if(!c.stateMarkerGraphic)c.stateMarkerGraphic=j.renderer.circle(0,0,h[a].r).attr(h[a]).add(c.group);c.stateMarkerGraphic.translate(b.plotX,b.plotY)}else b.graphic&&b.graphic.attr(h[a])},setTooltipText:function(){var a=this;a.tooltipText=a.series.chart.options.tooltip.formatter.call({series:a.series,point:a,x:a.category,y:a.y,percentage:a.percentage,total:a.total||a.stackTotal})}};var Sa=function(){};Sa.prototype={isCartesian:true,type:"line",pointClass:Xb,
pointAttrToOptions:{stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"},init:function(a,b){var c=this,d,e=a.series.length;c.chart=a;b=c.setOptions(b);R(c,{index:e,options:b,name:b.name||"Series "+(e+1),state:Ka,pointAttr:{},visible:b.visible!==false,selected:b.selected===true});a=b.events;for(d in a)jb(c,d,a[d]);c.getColor();c.getSymbol();c.setData(b.data,false)},autoIncrement:function(){var a=this,b=a.options,c=a.xIncrement;c=A(c,b.pointStart,0);a.pointInterval=A(a.pointInterval,
b.pointInterval,1);a.xIncrement=c+a.pointInterval;return c},cleanData:function(){var a=this;a=a.data;var b;a.sort(function(c,d){return c.x-d.x});for(b=a.length-1;b>=0;b--)a[b-1]&&a[b-1].x==a[b].x&&a.splice(b-1,1)},getSegments:function(){var a=-1,b=[],c=this.data;p(c,function(d,e){if(d.y===null){e>a+1&&b.push(c.slice(a+1,e));a=e}else e==c.length-1&&b.push(c.slice(a+1,e+1))});this.segments=b},setOptions:function(a){var b=this.chart.options.plotOptions;return a=ka(b[this.type],b.series,a)},getColor:function(){var a=
this.chart.options.colors;this.color=this.options.color||a[rb++]||"#0000ff";if(rb>=a.length)rb=0},getSymbol:function(){var a=this.chart.options.symbols,b=this.options.marker.symbol||a[kc++];this.symbol=b;if(kc>=a.length)kc=0},addPoint:function(a,b,c){var d=this,e=d.data;a=(new d.pointClass).init(d,a);b=A(b,true);e.push(a);c&&e[0].remove(false);d.isDirty=true;b&&d.chart.redraw()},setData:function(a,b){var c=this,d=c.data,e=c.initialColor,f=d&&d.length||0;c.xIncrement=null;if(U(e))rb=e;for(a=Db(nc(a||
[]),function(g){return(new c.pointClass).init(c,g)});f--;)d[f].destroy();c.data=a;c.cleanData();c.getSegments();c.isDirty=true;A(b,true)&&c.chart.redraw()},remove:function(a){var b=this,c=b.chart;a=A(a,true);if(!b.isRemoving){b.isRemoving=true;ya(b,"remove",null,function(){b.destroy();c.isDirty=true;a&&c.redraw()})}b.isRemoving=false},translate:function(){for(var a=this,b=a.chart,c=a.options.stacking,d=a.xAxis.categories,e=a.yAxis,f=e.stacks[a.type],g=a.data,j=g.length;j--;){var h=g[j],l=h.x,n=h.y,
u;h.plotX=a.xAxis.translate(l);if(c&&a.visible&&f[l]){u=f[l];l=u.total;u.cum=u=u.cum-n;n=u+n;if(c=="percent"){u=l?u*100/l:0;n=l?n*100/l:0}h.percentage=l?h.y*100/l:0;h.stackTotal=l;h.yBottom=e.translate(u,0,1)}if(n!==null)h.plotY=e.translate(n,0,1);h.clientX=b.inverted?b.plotHeight-h.plotX:h.plotX;h.category=d&&d[h.x]!==Ta?d[h.x]:h.x}},setTooltipPoints:function(a){var b=this,c=b.chart,d=c.inverted,e=[],f=(d?c.plotTop:c.plotLeft)+c.plotSizeX,g,j,h=[];if(a)b.tooltipPoints=null;p(b.segments,function(l){e=
e.concat(l)});if(b.xAxis&&b.xAxis.reversed)e=e.reverse();p(e,function(l,n){b.tooltipPoints||l.setTooltipText();g=e[n-1]?e[n-1].high+1:0;for(j=l.high=e[n+1]?hb((l.plotX+(e[n+1]?e[n+1].plotX:f))/2):f;g<=j;)h[d?f-g++:g++]=l});b.tooltipPoints=h},onMouseOver:function(){var a=this,b=a.chart,c=b.hoverSeries,d=a.stateMarkerGraphic;if(!b.mouseIsDown){d&&d.show();c&&c!=a&&c.onMouseOut();a.options.events.mouseOver&&ya(a,"mouseOver");a.tracker&&a.tracker.toFront();a.setState(ob);b.hoverSeries=a}},onMouseOut:function(){var a=
this,b=a.options,c=a.chart,d=c.tooltip,e=c.hoverPoint;e&&e.onMouseOut();a&&b.events.mouseOut&&ya(a,"mouseOut");d&&!b.stickyTracking&&d.hide();a.setState();c.hoverSeries=null},animate:function(a){var b=this,c=b.chart,d=b.clipRect;if(a){if(!d.isAnimating){d.attr("width",0);d.isAnimating=true}}else{d.animate({width:c.plotSizeX},{complete:function(){d.isAnimating=false},duration:1E3});this.animate=null}},drawPoints:function(){var a=this,b,c=a.data,d=a.chart,e,f,g,j,h,l;if(a.options.marker.enabled)for(g=
c.length;g--;){j=c[g];e=j.plotX;f=j.plotY;l=j.graphic;if(j.plotY!==Ta){b=j.pointAttr[j.selected?wb:Ka];h=b.r;if(l)l.attr({x:e,y:f,r:h});else j.graphic=d.renderer.symbol(A(j.marker&&j.marker.symbol,a.symbol),e,f,h).attr(b).add(a.group)}}},convertAttribs:function(a,b,c,d){var e=this.pointAttrToOptions,f,g,j={};a=a||{};b=b||{};c=c||{};d=d||{};for(f in e){g=e[f];j[f]=A(a[g],b[f],c[f],d[f])}return j},getAttribs:function(){var a=this,b=a.options.marker||a.options,c=b.states,d=c[ob],e,f={},g=a.color,j=a.data,
h=[],l,n=a.pointAttrToOptions;if(a.options.marker){f={stroke:g,fill:g};d.radius=d.radius||b.radius+2;d.lineWidth=d.lineWidth||b.lineWidth+1}else{f={fill:g};d.color=d.color||Jb(d.color||g).brighten(d.brightness).get()}h[Ka]=a.convertAttribs(b,f);p([ob,wb],function(y){h[y]=a.convertAttribs(c[y],h[Ka])});a.pointAttr=h;for(f=j.length;f--;){g=j[f];b=g.options&&g.options.marker||g.options;e=false;if(g.options)for(var u in n)if(b[n[u]])e=true;if(e){l=[];c=b.states||{};e=c[ob]=c[ob]||{};if(!a.options.marker)e.color=
Jb(e.color||g.options.color).brighten(e.brightness||d.brightness).get();l[Ka]=a.convertAttribs(b,h[Ka]);l[ob]=a.convertAttribs(c[ob],h[ob],l[Ka]);l[wb]=a.convertAttribs(c[wb],h[wb],l[Ka])}else l=h;g.pointAttr=l}},destroy:function(){var a=this,b=a.chart.series,c=a.clipRect,d;Gb(a);a.legendItem&&a.chart.legend.destroyItem(a);p(a.data,function(e){e.destroy()});p(["area","graph","dataLabelsGroup","group","tracker"],function(e){a[e]&&a[e].destroy()});c&&c!=a.chart.clipRect&&c.destroy();p(b,function(e,
f){e==a&&b.splice(f,1)});for(d in a)delete a[d]},drawDataLabels:function(){if(this.options.dataLabels.enabled){var a=this,b,c,d=a.data,e=a.options.dataLabels,f,g=a.dataLabelsGroup,j=a.chart,h=j.inverted,l=a.type,n,u;if(!g)g=a.dataLabelsGroup=j.renderer.g(Eb+"data-labels").attr({visibility:a.visible?Wb:Fb,zIndex:4}).translate(j.plotLeft,j.plotTop).add();n=e.color;if(n=="auto")n=null;e.style.color=A(n,a.color);p(d,function(y){var ca=A(y.barX,y.plotX),Ba=y.plotY,O=y.tooltipPos,ea=y.dataLabel;ea&&ea.destroy();
f=e.formatter.call({x:y.x,y:y.y,series:a,point:y,percentage:y.percentage,total:y.total||y.stackTotal});b=(h?j.plotWidth-Ba:ca)+e.x;c=(h?j.plotHeight-ca:Ba)+e.y;if(O){b=O[0]+e.x;c=O[1]+e.y}u=e.align;if(l=="column")b+={center:y.barW/2,right:y.barW}[u]||0;if(f)y.dataLabel=j.renderer.text(f,b,c,e.style,e.rotation,u).attr({zIndex:1}).add(y.group||g);a.drawConnector&&a.drawConnector(y)})}},drawGraph:function(){var a=this,b=a.options,c=a.chart,d=a.graph,e=[],f=a.area,g=a.group,j=b.lineColor||a.color,h=b.lineWidth,
l;c=c.renderer;var n=a.yAxis.getThreshold(b.threshold||0),u=/^area/.test(a.type),y=[];p(a.segments,function(ca){l=[];p(ca,function(mb,Ja){Ja<2&&l.push([gb,Na][Ja]);if(Ja&&b.step){Ja=ca[Ja-1];l.push(mb.plotX,Ja.plotY)}l.push(mb.plotX,mb.plotY)});e=e.concat(l);if(u){var Ba=[],O,ea=l.length;for(O=0;O<ea;O++)Ba.push(l[O]);if(b.stacking&&a.type!="areaspline")for(O=ca.length-1;O>=0;O--)Ba.push(ca[O].plotX,ca[O].yBottom);else Ba.push(ca[ca.length-1].plotX,n,ca[0].plotX,n,"z");y=y.concat(Ba)}});a.graphPath=
e;if(d)d.attr({d:e});else if(h)a.graph=c.path(e).attr({stroke:j,"stroke-width":h+Ia}).add(g).shadow(b.shadow);if(u){d=A(b.fillColor,Jb(a.color).setOpacity(b.fillOpacity||0.75).get());if(f)f.attr({d:y});else a.area=a.chart.renderer.path(y).attr({fill:d}).add(a.group)}},render:function(){var a=this,b=a.chart,c,d=a.options.animation&&a.animate;c=b.renderer;if(!a.clipRect){a.clipRect=!b.hasRendered&&b.clipRect?b.clipRect:c.clipRect(0,0,b.plotSizeX,b.plotSizeY);if(!b.clipRect)b.clipRect=a.clipRect}if(!a.group){c=
a.group=c.g("series");b.inverted&&c.attr({width:b.plotWidth,height:b.plotHeight}).invert();c.clip(a.clipRect).attr({visibility:a.visible?Wb:Fb,zIndex:3}).translate(b.plotLeft,b.plotTop).add()}a.drawDataLabels();d&&a.animate(true);a.getAttribs();a.drawGraph&&a.drawGraph();a.drawPoints();a.options.enableMouseTracking!==false&&a.drawTracker();d&&a.animate();a.isDirty=false},redraw:function(){var a=this;a.translate();a.setTooltipPoints(true);a.render()},setState:function(a){var b=this,c=b.options,d=b.graph,
e=c.states,f=b.stateMarkerGraphic;c=c.lineWidth;a=a||Ka;if(b.state!=a){b.state=a;if(!(e[a]&&e[a].enabled===false)){if(a)c=e[a].lineWidth||c;else f&&f.hide();if(d)d.animate({"stroke-width":c},a?0:500)}}},setVisible:function(a,b){var c=this,d=c.chart,e=c.legendItem,f=c.group,g=c.tracker,j=c.dataLabelsGroup,h,l=c.data,n=d.options.chart.ignoreHiddenSeries;h=c.visible;h=(c.visible=a=a===Ta?!h:a)?"show":"hide";if(a)c.isDirty=n;f&&f[h]();if(g)g[h]();else for(f=l.length;f--;){g=l[f];g.tracker&&g.tracker[h]()}j&&
j[h]();e&&d.legend.colorizeItem(c,a);n&&c.options.stacking&&p(d.series,function(u){if(u.options.stacking&&u.visible)u.isDirty=true});b!==false&&d.redraw();ya(c,h)},show:function(){this.setVisible(true)},hide:function(){this.setVisible(false)},select:function(a){var b=this;b.selected=a=a===Ta?!b.selected:a;if(b.checkbox)b.checkbox.checked=a;ya(b,a?"select":"unselect")},drawTracker:function(){var a=this,b=a.options,c=a.graphPath,d=a.chart,e=a.tracker,f=b.cursor;f=f&&{cursor:f};if(e)e.attr({d:c});else a.tracker=
d.renderer.path(c).attr({isTracker:true,stroke:cd,fill:db,"stroke-width":b.lineWidth+2*d.options.tooltip.snap,"stroke-linecap":"round",visibility:a.visible?Wb:Fb,zIndex:1}).on("mouseover",function(){d.hoverSeries!=a&&a.onMouseOver()}).on("mouseout",function(){b.stickyTracking||a.onMouseOut()}).css(f).add(d.trackerGroup)}};pa=eb(Sa);cb.line=pa;pa=eb(Sa,{type:"area"});cb.area=pa;ad.prototype={get:function(a){a||(a=50);var b=this.n;b=(this.xdata[b-1]-this.xdata[0])/(a-1);var c=[],d=[];c[0]=this.xdata[0];
d[0]=this.ydata[0];for(var e=[{plotX:c[0],plotY:d[0]}],f=1;f<a;f++){c[f]=c[0]+f*b;d[f]=this.interpolate(c[f]);e[f]={plotX:c[f],plotY:d[f]}}return e},interpolate:function(a){for(var b=this.n-1,c=0;b-c>1;){var d=(b+c)/2;if(this.xdata[hb(d)]>a)b=d;else c=d}b=hb(b);c=hb(c);d=this.xdata[b]-this.xdata[c];var e=(this.xdata[b]-a)/d;a=(a-this.xdata[c])/d;return e*this.ydata[c]+a*this.ydata[b]+((e*e*e-e)*this.y2[c]+(a*a*a-a)*this.y2[b])*d*d/6}};pa=eb(Sa,{type:"spline",drawGraph:function(){var a=this,b=a.segments;
a.splinedata=a.getSplineData();a.segments=a.splinedata;Sa.prototype.drawGraph.apply(a,arguments);a.segments=b},getSplineData:function(){var a=this,b=a.chart,c=[],d;p(a.segments,function(e){if(a.xAxis.reversed)e=e.reverse();var f=[],g,j;p(e,function(h,l){g=e[l+2]||e[l+1]||h;j=e[l-2]||e[l-1]||h;g.plotX>=0&&j.plotX<=b.plotWidth&&f.push(h)});if(f.length>1)d=Z(sb(b.plotWidth,f[f.length-1].clientX-f[0].clientX)/3);c.push(e.length>1?d?(new ad(f)).get(d):[]:e)});return c}});cb.spline=pa;pa=eb(pa,{type:"areaspline"});
cb.areaspline=pa;var mc=eb(Sa,{type:"column",pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color",r:"borderRadius"},init:function(){Sa.prototype.init.apply(this,arguments);var a=this,b=a.chart;b.hasRendered&&p(b.series,function(c){if(c.type==a.type)c.isDirty=true})},translate:function(){var a=this,b=a.chart,c=0,d=a.xAxis.reversed,e=a.xAxis.categories,f;Sa.prototype.translate.apply(a);p(b.series,function(O){if(O.type==a.type)if(O.options.stacking){U(f)||(f=c++);O.columnIndex=
f}else O.columnIndex=c++});var g=a.options,j=a.data,h=a.closestPoints;b=Za(j[1]?j[h].plotX-j[h-1].plotX:b.plotSizeX/(e?e.length:1));e=b*g.groupPadding;h=b-2*e;h=h/c;var l=g.pointWidth,n=U(l)?(h-l)/2:h*g.pointPadding,u=A(l,h-2*n);l=(d?c-a.columnIndex:a.columnIndex)||0;var y=n+(e+l*h-b/2)*(d?-1:1),ca=a.yAxis.getThreshold(g.threshold||0),Ba=g.minPointLength;p(j,function(O){var ea=O.plotY,mb=O.plotX+y,Ja=Kb(ea,ca),jc=u,E=Za((O.yBottom||ca)-ea),ua;if(Za(E)<(Ba||5)){if(Ba){E=Ba;Ja=ca-(ea<=ca?Ba:0)}ua=Ja-
3}R(O,{barX:mb,barY:Ja,barW:jc,barH:E});O.shapeType="rect";O.shapeArgs={x:mb,y:Ja,width:jc,height:E,r:g.borderRadius};if(U(ua))O.trackerArgs=ka(O.shapeArgs,{height:6,y:ua})})},getSymbol:function(){},drawGraph:function(){},drawPoints:function(){var a=this,b=a.options,c=a.chart.renderer,d,e;p(a.data,function(f){if(U(f.plotY)){d=f.graphic;e=f.shapeArgs;if(d)d.attr(e);else f.graphic=c[f.shapeType](e).attr(f.pointAttr[f.selected?wb:Ka]).add(a.group).shadow(b.shadow)}})},drawTracker:function(){var a=this,
b=a.chart,c=b.renderer,d,e,f=+new Date,g=a.options.cursor,j=g&&{cursor:g},h;p(a.data,function(l){e=l.tracker;d=l.trackerArgs||l.shapeArgs;if(e)e.attr(d);else l.tracker=c[l.shapeType](d).attr({isTracker:f,fill:cd,visibility:a.visible?Wb:Fb,zIndex:1}).on("mouseover",function(n){h=n.relatedTarget||n.fromElement;b.hoverSeries!=a&&na(h,"isTracker")!=f&&a.onMouseOver();l.onMouseOver()}).on("mouseout",function(n){if(!a.options.stickyTracking){h=n.relatedTarget||n.toElement;na(h,"isTracker")!=f&&a.onMouseOut()}}).css(j).add(b.trackerGroup)})},
cleanData:function(){var a=this,b=a.data,c,d,e,f;Sa.prototype.cleanData.apply(a);for(f=b.length-1;f>=0;f--)if(b[f-1]){c=b[f].x-b[f-1].x;if(d===Ta||c<d){d=c;e=f}}a.closestPoints=e},animate:function(a){var b=this,c=b.data;if(!a){p(c,function(d){var e=d.graphic;if(e){e.attr({height:0,y:b.yAxis.translate(0,0,1)});e.animate({height:d.barH,y:d.barY},{duration:1E3})}});b.animate=null}},remove:function(){var a=this,b=a.chart;b.hasRendered&&p(b.series,function(c){if(c.type==a.type)c.isDirty=true});Sa.prototype.remove.apply(a,
arguments)}});cb.column=mc;pa=eb(mc,{type:"bar",init:function(a){a.inverted=this.inverted=true;mc.prototype.init.apply(this,arguments)}});cb.bar=pa;pa=eb(Sa,{type:"scatter",translate:function(){var a=this;Sa.prototype.translate.apply(a);p(a.data,function(b){b.shapeType="circle";b.shapeArgs={x:b.plotX,y:b.plotY,r:a.chart.options.tooltip.snap}})},drawTracker:function(){var a=this,b=a.options.cursor,c=b&&{cursor:b},d;p(a.data,function(e){(d=e.graphic)&&d.attr({isTracker:true}).on("mouseover",function(){a.onMouseOver();
e.onMouseOver()}).on("mouseout",function(){a.options.stickyTracking||a.onMouseOut()}).css(c)})},cleanData:function(){}});cb.scatter=pa;pa=eb(Xb,{init:function(){Xb.prototype.init.apply(this,arguments);var a=this,b;R(a,{visible:a.visible!==false,name:A(a.name,"Slice")});b=function(){a.slice()};jb(a,"select",b);jb(a,"unselect",b);return a},setVisible:function(a){var b=this,c=b.series.chart;if(b.visible=a=a===Ta?!b.visible:a){b.group.show();b.tracker.show()}else{b.group.hide();b.tracker.hide()}b.legendItem&&
c.legend.colorizeItem(b,a)},slice:function(a,b){var c=this,d=c.series;d=d.chart;var e=c.slicedTranslation;A(b,true);a=c.sliced=U(a)?a:!c.sliced;c.group.animate({translateX:a?e[0]:d.plotLeft,translateY:a?e[1]:d.plotTop},100)}});pa=eb(Sa,{type:"pie",isCartesian:false,pointClass:pa,pointAttrToOptions:{stroke:"borderColor","stroke-width":"borderWidth",fill:"color"},getColor:function(){this.initialColor=rb},translate:function(){var a=0,b=this,c=-0.25,d=b.options,e=d.slicedOffset,f=d.center,g=b.chart,j=
g.plotWidth,h=g.plotHeight,l,n,u;b=b.data;var y=2*Ga.PI,ca,Ba=Kb(j,h),O;f.push(d.size,d.innerSize||0);f=Db(f,function(ea,mb){return(O=/%$/.test(ea))?[j,h,Ba,Ba][mb]*parseInt(ea,10)/100:ea});p(b,function(ea){a+=ea.y});p(b,function(ea){ca=a?ea.y/a:0;l=c*y;c+=ca;n=c*y;ea.shapeType="arc";ea.shapeArgs={x:f[0],y:f[1],r:f[2]/2,innerR:f[3]/2,start:l,end:n};u=(n+l)/2;ea.slicedTranslation=Db([Hb(u)*e+g.plotLeft,Ib(u)*e+g.plotTop],Z);ea.tooltipPos=[f[0]+Hb(u)*f[2]*0.35,f[1]+Ib(u)*f[2]*0.35];ea.percentage=ca*
100;ea.total=a});this.setTooltipPoints()},render:function(){var a=this;a.getAttribs();this.drawPoints();a.options.enableMouseTracking!==false&&a.drawTracker();this.drawDataLabels();a.isDirty=false},drawPoints:function(){var a=this,b=a.chart,c=b.renderer,d,e,f;p(this.data,function(g){e=g.graphic;f=g.shapeArgs;if(!g.group){d=g.sliced?g.slicedTranslation:[b.plotLeft,b.plotTop];g.group=c.g("point").attr({zIndex:3}).add().translate(d[0],d[1])}if(e)e.attr(f);else g.graphic=c.arc(f).attr(g.pointAttr[Ka]).add(g.group);
g.visible===false&&g.setVisible(false)})},drawTracker:mc.prototype.drawTracker,getSymbol:function(){}});cb.pie=pa;kb.Highcharts={Chart:hd,dateFormat:fc,getOptions:ed,numberFormat:fd,Point:Xb,Renderer:Zc,seriesTypes:cb,setOptions:dd,Series:Sa,addEvent:jb,createElement:Da,discardElement:ac,css:Ua,each:p,extend:R,map:Db,merge:ka,pick:A,extendClass:eb}})();





