﻿
function changeTabEquip() {
    document.getElementById('equipTab').className = 'tabtxtSelected';
    document.getElementById('foamTab').className = 'tabtxt';
    document.getElementById('rigsTab').className = 'tabtxt';
    document.getElementById('servicesTab').className = 'tabtxt';
}
function changeTabFoam() {
    document.getElementById('equipTab').className = 'tabtxt';
    document.getElementById('foamTab').className = 'tabtxtSelected';
    document.getElementById('rigsTab').className = 'tabtxt';
    document.getElementById('servicesTab').className = 'tabtxt';
}
function changeTabRigs() {
    document.getElementById('equipTab').className = 'tabtxt';
    document.getElementById('foamTab').className = 'tabtxt';
    document.getElementById('rigsTab').className = 'tabtxtSelected';
    document.getElementById('servicesTab').className = 'tabtxt';
}
function changeTabServices() {
    document.getElementById('equipTab').className = 'tabtxt';
    document.getElementById('foamTab').className = 'tabtxt';
    document.getElementById('rigsTab').className = 'tabtxt';
    document.getElementById('servicesTab').className = 'tabtxtSelected';
}

function propLocate(form)
{
url = document.myform.equipSelect.value;
location.href = url;
}
function updateSelectionSales()
{
        var rofl = document.getElementById('salesLit');
        var count = rofl.length;
        var i;
        var new_html = "";
        
        for(i = 0; i < count; i++)
        {
                if(rofl[i].checked)
                {
                        new_html += "<li>"+rofl[i].value+"</li>";
                }
        }
        
        document.getElementById('selectionSales').innerHTML = new_html;
        
        return(true);
}
function updateSelectionTech()
{
        var rofl = document.getElementById('techLit');
        var count = rofl.length;
        var i;
        var new_html = "";
        
        for(i = 0; i < count; i++)
        {
                if(rofl[i].checked)
                {
                        new_html += "<li>"+rofl[i].value+"</li>";
                }
        }
        
        document.getElementById('selectionTech').innerHTML = new_html;
        
        return(true);
}

function showDivA(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q1').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q1').style.visibility='visible';
document.getElementById('Q1').style.position='relative';
}
}
}
function showDivB(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q2').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q2').style.visibility='visible';
document.getElementById('Q2').style.position='relative';
}
}
}
function showDivC(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q3').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q3').style.visibility='visible';
document.getElementById('Q3').style.position='relative';
}
}
}

function showDivD(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q4').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q4').style.visibility='visible';
document.getElementById('Q4').style.position='relative';
}
}
}

function showDivE(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q5').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q5').style.visibility='visible';
document.getElementById('Q5').style.position='relative';
}
}
}

function showDivF(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q6').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q6').style.visibility='visible';
document.getElementById('Q6').style.position='relative';
}
}
}

function showDivG(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q7').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q7').style.visibility='visible';
document.getElementById('Q7').style.position='relative';
}
}
}

function showDivH(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q8').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q8').style.visibility='visible';
document.getElementById('Q8').style.position='relative';
}
}
}

function showDivI(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q9').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q9').style.visibility='visible';
document.getElementById('Q9').style.position='relative';
}
}
}

function showDivJ(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q10').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q10').style.visibility='visible';
document.getElementById('Q10').style.position='relative';
}
}
}
function showDivK(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q11').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q11').style.visibility='visible';
document.getElementById('Q11').style.position='relative';
}
}
}
function showDivU(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q12').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q12').style.visibility='visible';
document.getElementById('Q12').style.position='relative';
}
}
}
function showDivL(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q13').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q13').style.visibility='visible';
document.getElementById('Q13').style.position='relative';
}
}
}
function showDivM(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q14').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q14').style.visibility='visible';
document.getElementById('Q14').style.position='relative';
}
}
}function showDivN(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q15').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q15').style.visibility='visible';
document.getElementById('Q15').style.position='relative';
}
}
}function showDivO(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q16').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q16').style.visibility='visible';
document.getElementById('Q16').style.position='relative';
}
}
}function showDivP(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q17').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q17').style.visibility='visible';
document.getElementById('Q17').style.position='relative';
}
}
}function showDivQ(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q18').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q18').style.visibility='visible';
document.getElementById('Q18').style.position='relative';
}
}
}function showDivR(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q19').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q19').style.visibility='visible';
document.getElementById('Q19').style.position='relative';
}
}
}function showDivS(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q20').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q20').style.visibility='visible';
document.getElementById('Q20').style.position='relative';
}
}
}function showDivT(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q21').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q21').style.visibility='visible';
document.getElementById('Q21').style.position='relative';
}
}
}function showDivV(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q22').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q22').style.visibility='visible';
document.getElementById('Q22').style.position='relative';
}
}
}function showDivW(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q23').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q23').style.visibility='visible';
document.getElementById('Q23').style.position='relative';
}
}
}function showDivX(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q24').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q24').style.visibility='visible';
document.getElementById('Q24').style.position='relative';
}
}
}function showDivY(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q25').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q25').style.visibility='visible';
document.getElementById('Q25').style.position='relative';
}
}
}function showDivZ(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q26').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q26').style.visibility='visible';
document.getElementById('Q26').style.position='relative';
}
}
}function showDivAA(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q27').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q27').style.visibility='visible';
document.getElementById('Q27').style.position='relative';
}
}
}function showDivAB(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q28').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q28').style.visibility='visible';
document.getElementById('Q28').style.position='relative';
}
}
}function showDivAC(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q29').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q29').style.visibility='visible';
document.getElementById('Q29').style.position='relative';
}
}
}function showDivAD(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q30').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q30').style.visibility='visible';
document.getElementById('Q30').style.position='relative';
}
}
}function showDivAE(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q31').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q31').style.visibility='visible';
document.getElementById('Q31').style.position='relative';
}
}
}function showDivAF(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q32').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q32').style.visibility='visible';
document.getElementById('Q32').style.position='relative';
}
}
}function showDivAG(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q33').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q33').style.visibility='visible';
document.getElementById('Q33').style.position='relative';
}
}
}function showDivAH(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q34').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q34').style.visibility='visible';
document.getElementById('Q34').style.position='relative';
}
}
}function showDivAI(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q35').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q35').style.visibility='visible';
document.getElementById('Q35').style.position='relative';
}
}
}function showDivAJ(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q36').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q36').style.visibility='visible';
document.getElementById('Q36').style.position='relative';
}
}
}function showDivAK(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q37').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q37').style.visibility='visible';
document.getElementById('Q37').style.position='relative';
}
}
}function showDivAL(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q38').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q38').style.visibility='visible';
document.getElementById('Q38').style.position='relative';
}
}
}function showDivAM(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q39').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q39').style.visibility='visible';
document.getElementById('Q39').style.position='relative';
}
}
}function showDivAN(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q40').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q40').style.visibility='visible';
document.getElementById('Q40').style.position='relative';
}
}
}function showDivAO(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q41').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q41').style.visibility='visible';
document.getElementById('Q41').style.position='relative';
}
}
}function showDivAP(more) {
var tag = document.getElementsByTagName('div')

if(document.getElementById('Q42').getAttribute("nav")){
for(x=0; x<tag.length; x++){
//hide all div layers with the 'nav' attribute
if(tag[x].getAttribute("nav")){
tag[x].style.visibility='hidden';
tag[x].style.position='absolute';
}
// show only the layer with the id passed as the argument
// by the main function
document.getElementById('Q42').style.visibility='visible';
document.getElementById('Q42').style.position='relative';
}
}
}
function troubleGun(form) {
	if (form.selectGun.selectedIndex == 1) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleFusion.jpg" />';
	document.getElementById('fusionManuals').style.visibility = 'visible';
	document.getElementById('fusionManuals').style.position = 'static';
	document.getElementById('fusionTrouble').style.visibility = 'visible';
	document.getElementById('fusionTrouble').style.position = 'static';
	document.getElementById('P2Manuals').style.visibility = 'hidden';
	document.getElementById('GX7Manuals').style.visibility = 'hidden';
	document.getElementById('problerManuals').style.visibility = 'hidden';
	document.getElementById('gapManuals').style.visibility = 'hidden';
	document.getElementById('P2Manuals').style.position = 'absolute';
	document.getElementById('GX7Manuals').style.position = 'absolute';
	document.getElementById('problerManuals').style.position = 'absolute';
	document.getElementById('gapManuals').style.position = 'absolute';
	document.getElementById('P2Trouble').style.visibility = 'hidden';
	document.getElementById('P2Trouble').style.position = 'absolute';
	document.getElementById('GX7Trouble').style.visibility = 'hidden';
	document.getElementById('GX7Trouble').style.position = 'absolute';
	document.getElementById('gapTrouble').style.visibility = 'hidden';
	document.getElementById('gapTrouble').style.position = 'absolute';
	document.getElementById('problerTrouble').style.visibility = 'hidden';
	document.getElementById('problerTrouble').style.position = 'absolute';
	}
	else if (form.selectGun.selectedIndex == 2) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleP2.jpg" />';
	document.getElementById('fusionManuals').style.visbility = 'hidden';
	document.getElementById('P2Manuals').style.visibility = 'visible';
	document.getElementById('GX7Manuals').style.visibility = 'hidden';
	document.getElementById('problerManuals').style.visibility = 'hidden';
	document.getElementById('gapManuals').style.visibility = 'hidden';
	document.getElementById('fusionManuals').style.position = 'absolute';
	document.getElementById('P2Manuals').style.position = 'static';
	document.getElementById('GX7Manuals').style.position = 'absolute';
	document.getElementById('problerManuals').style.position = 'absolute';
	document.getElementById('gapManuals').style.position = 'absolute';
	document.getElementById('P2Trouble').style.visibility = 'visible';
	document.getElementById('P2Trouble').style.position = 'static';
	document.getElementById('GX7Trouble').style.visibility = 'hidden';
	document.getElementById('GX7Trouble').style.position = 'absolute';
	document.getElementById('gapTrouble').style.visibility = 'hidden';
	document.getElementById('gapTrouble').style.position = 'absolute';
	document.getElementById('problerTrouble').style.visibility = 'hidden';
	document.getElementById('problerTrouble').style.position = 'absolute';
	document.getElementById('fusionTrouble').style.visibility = 'hidden';
	document.getElementById('fusionTrouble').style.position = 'absolute';
	}
	else if (form.selectGun.selectedIndex == 3) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleGX7.jpg" />';
	document.getElementById('fusionManuals').style.visbility = 'hidden';
	document.getElementById('P2Manuals').style.visibility = 'hidden';
	document.getElementById('GX7Manuals').style.visibility = 'visible';
	document.getElementById('problerManuals').style.visibility = 'hidden';
	document.getElementById('gapManuals').style.visibility = 'hidden';
	document.getElementById('fusionManuals').style.position = 'absolute';
	document.getElementById('P2Manuals').style.position = 'absolute';
	document.getElementById('GX7Manuals').style.position = 'static';
	document.getElementById('problerManuals').style.position = 'absolute';
	document.getElementById('gapManuals').style.position = 'absolute';
	document.getElementById('P2Trouble').style.visibility = 'hidden';
	document.getElementById('P2Trouble').style.position = 'absolute';
	document.getElementById('GX7Trouble').style.visibility = 'visible';
	document.getElementById('GX7Trouble').style.position = 'static';
	document.getElementById('gapTrouble').style.visibility = 'hidden';
	document.getElementById('gapTrouble').style.position = 'absolute';
	document.getElementById('problerTrouble').style.visibility = 'hidden';
	document.getElementById('problerTrouble').style.position = 'absolute';
	document.getElementById('fusionTrouble').style.visibility = 'hidden';
	document.getElementById('fusionTrouble').style.position = 'absolute';
	}
	else if (form.selectGun.selectedIndex == 4) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleProbler.jpg" />';
	document.getElementById('fusionManuals').style.visbility = 'hidden';
	document.getElementById('P2Manuals').style.visibility = 'hidden';
	document.getElementById('GX7Manuals').style.visibility = 'hidden';
	document.getElementById('problerManuals').style.visibility = 'visible';
	document.getElementById('gapManuals').style.visibility = 'hidden';
	document.getElementById('fusionManuals').style.position = 'absolute';
	document.getElementById('P2Manuals').style.position = 'absolute';
	document.getElementById('GX7Manuals').style.position = 'absolute';
	document.getElementById('problerManuals').style.position = 'static';
	document.getElementById('gapManuals').style.position = 'absolute';
	document.getElementById('P2Trouble').style.visibility = 'hidden';
	document.getElementById('P2Trouble').style.position = 'absolute';
	document.getElementById('GX7Trouble').style.visibility = 'hidden';
	document.getElementById('GX7Trouble').style.position = 'absolute';
	document.getElementById('gapTrouble').style.visibility = 'hidden';
	document.getElementById('gapTrouble').style.position = 'absolute';
	document.getElementById('problerTrouble').style.visibility = 'visible';
	document.getElementById('problerTrouble').style.position = 'static';
	document.getElementById('fusionTrouble').style.visibility = 'hidden';
	document.getElementById('fusionTrouble').style.position = 'absolute';
	}
	else if (form.selectGun.selectedIndex == 5) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleGAP.jpg" />';
	document.getElementById('fusionManuals').style.visbility = 'hidden';
	document.getElementById('P2Manuals').style.visibility = 'hidden';
	document.getElementById('GX7Manuals').style.visibility = 'hidden';
	document.getElementById('problerManuals').style.visibility = 'hidden';
	document.getElementById('gapManuals').style.visibility = 'visible';
	document.getElementById('fusionManuals').style.position = 'absolute';
	document.getElementById('P2Manuals').style.position = 'absolute';
	document.getElementById('GX7Manuals').style.position = 'absolute';
	document.getElementById('problerManuals').style.position = 'absolute';
	document.getElementById('gapManuals').style.position = 'static';
	document.getElementById('P2Trouble').style.visibility = 'hidden';
	document.getElementById('P2Trouble').style.position = 'absolute';
	document.getElementById('GX7Trouble').style.visibility = 'hidden';
	document.getElementById('GX7Trouble').style.position = 'absolute';
	document.getElementById('gapTrouble').style.visibility = 'visible';
	document.getElementById('gapTrouble').style.position = 'static';
	document.getElementById('problerTrouble').style.visibility = 'hidden';
	document.getElementById('problerTrouble').style.position = 'absolute';
	document.getElementById('fusionTrouble').style.visibility = 'hidden';
	document.getElementById('fusionTrouble').style.position = 'absolute';
	}

}
function troublePump(form) {
	if (form.selectPump.selectedIndex == 1) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleT1.jpg" />';
	document.getElementById('gracoTrouble').style.visibility = 'visible';
	document.getElementById('gracoTrouble').style.position = 'static';
	document.getElementById('IP01Trouble').style.visibility = 'hidden';
	document.getElementById('IP01Trouble').style.position = 'absolute';
	document.getElementById('IP02Trouble').style.visibility = 'hidden';
	document.getElementById('IP02Trouble').style.position = 'absolute';
	document.getElementById('T1Manuals').style.visibility = 'visible';
	document.getElementById('T1Manuals').style.position = 'static';
	document.getElementById('T2Manuals').style.visibility = 'hidden';
	document.getElementById('T2Manuals').style.position = 'absolute';
	document.getElementById('IP01Manuals').style.visibility = 'hidden';
	document.getElementById('IP01Manuals').style.position = 'absolute';
	document.getElementById('IP02Manuals').style.visibility = 'hidden';
	document.getElementById('IP02Manuals').style.position = 'absolute';
	document.getElementById('OP232Manuals').style.visibility = 'hidden';
	document.getElementById('OP232Manuals').style.position = 'absolute';
	}
	else if (form.selectPump.selectedIndex == 2) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleT2.jpg" />';
	document.getElementById('gracoTrouble').style.visibility = 'visible';
	document.getElementById('gracoTrouble').style.position = 'static';
	document.getElementById('IP01Trouble').style.visibility = 'hidden';
	document.getElementById('IP01Trouble').style.position = 'absolute';
	document.getElementById('IP02Trouble').style.visibility = 'hidden';
	document.getElementById('IP02Trouble').style.position = 'absolute';
	document.getElementById('T1Manuals').style.visibility = 'hidden';
	document.getElementById('T1Manuals').style.position = 'absolute';
	document.getElementById('T2Manuals').style.visibility = 'visible';
	document.getElementById('T2Manuals').style.position = 'static';
	document.getElementById('IP01Manuals').style.visibility = 'hidden';
	document.getElementById('IP01Manuals').style.position = 'absolute';
	document.getElementById('IP02Manuals').style.visibility = 'hidden';
	document.getElementById('IP02Manuals').style.position = 'absolute';
	document.getElementById('OP232Manuals').style.visibility = 'hidden';
	document.getElementById('OP232Manuals').style.position = 'absolute';
	}
	else if (form.selectPump.selectedIndex == 3) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleIP01.jpg" />';
	document.getElementById('IP01Trouble').style.visibility = 'visible';
	document.getElementById('IP01Trouble').style.position = 'static';
	document.getElementById('gracoTrouble').style.visibility = 'hidden';
	document.getElementById('gracoTrouble').style.position = 'absolute';
	document.getElementById('IP02Trouble').style.visibility = 'hidden';
	document.getElementById('IP02Trouble').style.position = 'absolute';
	document.getElementById('T1Manuals').style.visibility = 'hidden';
	document.getElementById('T1Manuals').style.position = 'absolute';
	document.getElementById('T2Manuals').style.visibility = 'hidden';
	document.getElementById('T2Manuals').style.position = 'absolute';
	document.getElementById('IP01Manuals').style.visibility = 'visible';
	document.getElementById('IP01Manuals').style.position = 'static';
	document.getElementById('IP02Manuals').style.visibility = 'hidden';
	document.getElementById('IP02Manuals').style.position = 'absolute';
	document.getElementById('OP232Manuals').style.visibility = 'hidden';
	document.getElementById('OP232Manuals').style.position = 'absolute';
	}
	else if (form.selectPump.selectedIndex == 4) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleIP02.jpg" />';
	document.getElementById('IP02Trouble').style.visibility = 'visible';
	document.getElementById('IP02Trouble').style.position = 'static';
	document.getElementById('gracoTrouble').style.visibility = 'hidden';
	document.getElementById('gracoTrouble').style.position = 'absolute';
	document.getElementById('IP01Trouble').style.visibility = 'hidden';
	document.getElementById('IP01Trouble').style.position = 'absolute';
	document.getElementById('T1Manuals').style.visibility = 'hidden';
	document.getElementById('T1Manuals').style.position = 'absolute';
	document.getElementById('T2Manuals').style.visibility = 'hidden';
	document.getElementById('T2Manuals').style.position = 'absolute';
	document.getElementById('IP01Manuals').style.visibility = 'hidden';
	document.getElementById('IP01Manuals').style.position = 'absolute';
	document.getElementById('IP02Manuals').style.visibility = 'visible';
	document.getElementById('IP02Manuals').style.position = 'static';
	document.getElementById('OP232Manuals').style.visibility = 'hidden';
	document.getElementById('OP232Manuals').style.position = 'absolute';
	}
 var divs = document.getElementsByTagName('div');
 for (var i = 0, div; div = divs[i]; i++) {
  if(div.getAttribute('nav')){
  div.style.visibility = 'hidden';
  div.style.position = 'absolute';
  }
  }
}
function troubleProp(form) {
	if (form.selectProp.selectedIndex == 1) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleH40.jpg" />';
	document.getElementById('hydraulicTemp').style.visibility = 'visible';
	document.getElementById('hydraulicMotor').style.visibility = 'visible';
	document.getElementById('electricTemp').style.visibility = 'hidden';
	document.getElementById('electricMotor').style.visibility = 'hidden';
	document.getElementById('hydraulicManuals').style.visibility = 'visible';
	document.getElementById('electricManuals').style.visibility = 'hidden';
	document.getElementById('hydraulicGuides').style.visibility = 'visible';
	document.getElementById('electricGuides').style.visibility = 'hidden';
	document.getElementById('hydraulicTemp').style.position = 'static';
	document.getElementById('hydraulicMotor').style.position = 'static';
	document.getElementById('electricTemp').style.position = 'absolute';
	document.getElementById('electricMotor').style.position = 'absolute';
	document.getElementById('hydraulicManuals').style.position = 'static';
	document.getElementById('electricManuals').style.position = 'absolute';
	document.getElementById('hydraulicGuides').style.position = 'static';
	document.getElementById('electricGuides').style.position = 'absolute';
	}
	else if (form.selectProp.selectedIndex == 2) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleH25.jpg" />';
	document.getElementById('hydraulicTemp').style.visibility = 'visible';
	document.getElementById('hydraulicMotor').style.visibility = 'visible';
	document.getElementById('electricTemp').style.visibility = 'hidden';
	document.getElementById('electricMotor').style.visibility = 'hidden';
	document.getElementById('hydraulicManuals').style.visibility = 'visible';
	document.getElementById('electricManuals').style.visibility = 'hidden';
	document.getElementById('hydraulicGuides').style.visibility = 'visible';
	document.getElementById('electricGuides').style.visibility = 'hidden';
	document.getElementById('hydraulicTemp').style.position = 'static';
	document.getElementById('hydraulicMotor').style.position = 'static';
	document.getElementById('electricTemp').style.position = 'absolute';
	document.getElementById('electricMotor').style.position = 'absolute';
	document.getElementById('hydraulicManuals').style.position = 'static';
	document.getElementById('electricManuals').style.position = 'absolute';
	document.getElementById('hydraulicGuides').style.position = 'static';
	document.getElementById('electricGuides').style.position = 'absolute';
	}
	else if (form.selectProp.selectedIndex == 3) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleE30.jpg" />';
	document.getElementById('hydraulicTemp').style.visibility = 'hidden';
	document.getElementById('hydraulicMotor').style.visibility = 'hidden';
	document.getElementById('electricTemp').style.visibility = 'visible';
	document.getElementById('electricMotor').style.visibility = 'visible';
	document.getElementById('hydraulicManuals').style.visibility = 'hidden';
	document.getElementById('electricManuals').style.visibility = 'visible';
	document.getElementById('hydraulicGuides').style.visibility = 'hidden';
	document.getElementById('electricGuides').style.visibility = 'visible';
	document.getElementById('hydraulicTemp').style.position = 'absolute';
	document.getElementById('hydraulicMotor').style.position = 'absolute';
	document.getElementById('electricTemp').style.position = 'static';
	document.getElementById('electricMotor').style.position = 'static';
	document.getElementById('hydraulicManuals').style.position = 'absolute';
	document.getElementById('electricManuals').style.position = 'static';
	document.getElementById('hydraulicGuides').style.position = 'absolute';
	document.getElementById('electricGuides').style.position = 'static';
	}
	else if (form.selectProp.selectedIndex == 4) {
	document.getElementById('troubleIMG').innerHTML = '<img src="images/troubleE20.jpg" />';
	document.getElementById('hydraulicTemp').style.visibility = 'hidden';
	document.getElementById('hydraulicMotor').style.visibility = 'hidden';
	document.getElementById('electricTemp').style.visibility = 'visible';
	document.getElementById('electricMotor').style.visibility = 'visible';
	document.getElementById('hydraulicManuals').style.visibility = 'hidden';
	document.getElementById('electricManuals').style.visibility = 'visible';
	document.getElementById('hydraulicGuides').style.visibility = 'hidden';
	document.getElementById('electricGuides').style.visibility = 'visible';
	document.getElementById('hydraulicTemp').style.position = 'absolute';
	document.getElementById('hydraulicMotor').style.position = 'absolute';
	document.getElementById('electricTemp').style.position = 'static';
	document.getElementById('electricMotor').style.position = 'static';
	document.getElementById('hydraulicManuals').style.position = 'absolute';
	document.getElementById('electricManuals').style.position = 'static';
	document.getElementById('hydraulicGuides').style.position = 'absolute';
	document.getElementById('electricGuides').style.position = 'static';
	}
}
function errorCodes(form) {
	machineError = form.errorMachine.selectedIndex;
	machineErrorText = form.errorMachine.options[machineError].text;
	if (machineErrorText == "Graco H-40/XP3") {
	document.getElementById('hydraulicErrorCodes').style.visibility = 'visible';
	document.getElementById('hydraulicErrorCodes').style.position = 'static';
	document.getElementById('elecErrorCodes').style.visibility = 'hidden';
	document.getElementById('elecErrorCodes').style.position = 'absolute';
	}
	else if (machineErrorText == "Graco H-25/XP2") {
	document.getElementById('hydraulicErrorCodes').style.visibility = 'visible';
	document.getElementById('hydraulicErrorCodes').style.position = 'static';
	document.getElementById('elecErrorCodes').style.visibility = 'hidden';
	document.getElementById('elecErrorCodes').style.position = 'absolute';
	}
	else if (machineErrorText == "Graco E-30/XP2") {
	document.getElementById('hydraulicErrorCodes').style.visibility = 'hidden';
	document.getElementById('hydraulicErrorCodes').style.position = 'absolute';
	document.getElementById('elecErrorCodes').style.visibility = 'visible';
	document.getElementById('elecErrorCodes').style.position = 'static';
	}
	else if (machineErrorText == "Graco E-20/XP1") {
	document.getElementById('hydraulicErrorCodes').style.visibility = 'hidden';
	document.getElementById('hydraulicErrorCodes').style.position = 'absolute';
	document.getElementById('elecErrorCodes').style.visibility = 'visible';
	document.getElementById('elecErrorCodes').style.position = 'static';
	}

}
function troubleRedirect(form) {
url = document.myform.type.value;
location.href = url;
}
function PopupPic(sPicURL) { 
	window.open("popup.htm?"+sPicURL, "", "resizable=1,HEIGHT=200,WIDTH=200");
}

function GX7360() {
window.open( "360/GX7/GX7360.htm", "myWindow", 
"status = 1, height = 535, width = 535, resizable = 0" )
}
function fusion360() {
window.open( "360/Fusion/fusion360.htm", "myWindow", 
"status = 1, height = 535, width = 535, resizable = 0" )
}
function fusionCS360() {
window.open( "360/CS/CS360.htm", "myWindow", 
"status = 1, height = 535, width = 535, resizable = 0" )
}
function P2360() {
window.open( "360/P2/P2360.htm", "myWindow", 
"status = 1, height = 535, width = 535, resizable = 0" )
}
    
function showFeatured() {
	document.getElementById('featured').style.visibility = 'visible';
	document.getElementById('featured').style.position = 'static';
	document.getElementById('featuredTab').style.backgroundColor = '#ababab';
	document.getElementById('featuredLink').style.color = '#000';
	document.getElementById('featuredLink').style.fontWeight = 'bold';
	document.getElementById('featuredLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('application').style.visibility = 'hidden';
	document.getElementById('application').style.position = 'absolute';
	document.getElementById('materials').style.visibility = 'hidden';
	document.getElementById('materials').style.position = 'absolute';
	document.getElementById('materialsTab').style.backgroundColor = '';
	document.getElementById('materialsLink').style.color = '';
	document.getElementById('materialsLink').style.fontWeight = '';
	document.getElementById('materialsLink').style.textDecoration = '';
	document.getElementById('applicationTab').style.backgroundColor = '';
	document.getElementById('applicationLink').style.color = '';
	document.getElementById('applicationLink').style.fontWeight = '';
	document.getElementById('applicationLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
	document.getElementById('contractor').style.visibility = 'hidden';
	document.getElementById('contractor').style.position = 'absolute';
	document.getElementById('contractorTab').style.backgroundColor = '';
	document.getElementById('contractorLink').style.color = '';
	document.getElementById('contractorLink').style.fontWeight = '';
	document.getElementById('contractorLink').style.textDecoration = '';
	document.getElementById('spfVideos').style.visibility = 'hidden';
	document.getElementById('spfVideos').style.position = 'absolute';
	document.getElementById('spfPapers').style.visibility = 'visible';
	document.getElementById('spfPapers').style.position = 'relative';
	document.getElementById('spfContractors').style.visibility = 'hidden';
	document.getElementById('spfContractors').style.position = 'absolute';
	document.getElementById('spfUnderstanding').style.visibility = 'visible';
	document.getElementById('spfUnderstanding').style.position = 'relative';
}
function showContractor() {
    document.getElementById('contractor').style.visibility = 'visible';
	document.getElementById('contractor').style.position = 'static';
	document.getElementById('contractorTab').style.backgroundColor = '#ababab';
	document.getElementById('contractorLink').style.color = '#000';
	document.getElementById('contractorLink').style.fontWeight = 'bold';
	document.getElementById('contractorLink').style.textDecoration = 'none';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('application').style.visibility = 'hidden';
	document.getElementById('application').style.position = 'absolute';
	document.getElementById('materials').style.visibility = 'hidden';
	document.getElementById('materials').style.position = 'absolute';
	document.getElementById('materialsTab').style.backgroundColor = '';
	document.getElementById('materialsLink').style.color = '';
	document.getElementById('materialsLink').style.fontWeight = '';
	document.getElementById('materialsLink').style.textDecoration = '';
	document.getElementById('applicationTab').style.backgroundColor = '';
	document.getElementById('applicationLink').style.color = '';
	document.getElementById('applicationLink').style.fontWeight = '';
	document.getElementById('applicationLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
	document.getElementById('spfVideos').style.visibility = 'hidden';
	document.getElementById('spfVideos').style.position = 'absolute';
	document.getElementById('spfPapers').style.visibility = 'visible';
	document.getElementById('spfPapers').style.position = 'relative';
	document.getElementById('spfContractors').style.visibility = 'hidden';
	document.getElementById('spfContractors').style.position = 'absolute';
	document.getElementById('spfUnderstanding').style.visibility = 'visible';
	document.getElementById('spfUnderstanding').style.position = 'relative';
}
function showTechnical() {
	document.getElementById('technical').style.visibility = 'visible';
	document.getElementById('technical').style.position = 'static';
	document.getElementById('technicalTab').style.backgroundColor = '#ababab';
	document.getElementById('technicalLink').style.color = '#000';
	document.getElementById('technicalLink').style.fontWeight = 'bold';
	document.getElementById('technicalLink').style.textDecoration = 'none';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('application').style.visibility = 'hidden';
	document.getElementById('application').style.position = 'absolute';
	document.getElementById('materials').style.visibility = 'hidden';
	document.getElementById('materials').style.position = 'absolute';
	document.getElementById('materialsTab').style.backgroundColor = '';
	document.getElementById('materialsLink').style.color = '';
	document.getElementById('materialsLink').style.fontWeight = '';
	document.getElementById('materialsLink').style.textDecoration = '';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('applicationTab').style.backgroundColor = '';
	document.getElementById('applicationLink').style.color = '';
	document.getElementById('applicationLink').style.fontWeight = '';
	document.getElementById('applicationLink').style.textDecoration = '';
	document.getElementById('contractor').style.visibility = 'hidden';
	document.getElementById('contractor').style.position = 'absolute';
	document.getElementById('contractorTab').style.backgroundColor = '';
	document.getElementById('contractorLink').style.color = '';
	document.getElementById('contractorLink').style.fontWeight = '';
	document.getElementById('contractorLink').style.textDecoration = '';
	document.getElementById('spfVideos').style.visibility = 'visible';
	document.getElementById('spfVideos').style.position = 'relative';
	document.getElementById('spfPapers').style.visibility = 'hidden';
	document.getElementById('spfPapers').style.position = 'absolute';
	document.getElementById('spfContractors').style.visibility = 'visible';
	document.getElementById('spfContractors').style.position = 'relative';
	document.getElementById('spfUnderstanding').style.visibility = 'hidden';
	document.getElementById('spfUnderstanding').style.position = 'absolute';
}
function showApplication() {
	document.getElementById('application').style.visibility = 'visible';
	document.getElementById('application').style.position = 'static';
	document.getElementById('applicationTab').style.backgroundColor = '#ababab';
	document.getElementById('applicationLink').style.color = '#000';
	document.getElementById('applicationLink').style.fontWeight = 'bold';
	document.getElementById('applicationLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('materials').style.visibility = 'hidden';
	document.getElementById('materials').style.position = 'absolute';
	document.getElementById('materialsTab').style.backgroundColor = '';
	document.getElementById('materialsLink').style.color = '';
	document.getElementById('materialsLink').style.fontWeight = '';
	document.getElementById('materialsLink').style.textDecoration = '';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
	document.getElementById('contractor').style.visibility = 'hidden';
	document.getElementById('contractor').style.position = 'absolute';
	document.getElementById('contractorTab').style.backgroundColor = '';
	document.getElementById('contractorLink').style.color = '';
	document.getElementById('contractorLink').style.fontWeight = '';
	document.getElementById('contractorLink').style.textDecoration = '';
	document.getElementById('spfVideos').style.visibility = 'hidden';
	document.getElementById('spfVideos').style.position = 'absolute';
	document.getElementById('spfPapers').style.visibility = 'visible';
	document.getElementById('spfPapers').style.position = 'relative';
	document.getElementById('spfContractors').style.visibility = 'visible';
	document.getElementById('spfContractors').style.position = 'relative';
	document.getElementById('spfUnderstanding').style.visibility = 'hidden';
	document.getElementById('spfUnderstanding').style.position = 'absolute';
}
function showMaterials() {
	document.getElementById('materials').style.visibility = 'visible';
	document.getElementById('materials').style.position = 'static';
	document.getElementById('materialsTab').style.backgroundColor = '#ababab';
	document.getElementById('materialsLink').style.color = '#000';
	document.getElementById('materialsLink').style.fontWeight = 'bold';
	document.getElementById('materialsLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('application').style.visibility = 'hidden';
	document.getElementById('application').style.position = 'absolute';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('applicationTab').style.backgroundColor = '';
	document.getElementById('applicationLink').style.color = '';
	document.getElementById('applicationLink').style.fontWeight = '';
	document.getElementById('applicationLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
	document.getElementById('contractor').style.visibility = 'hidden';
	document.getElementById('contractor').style.position = 'absolute';
	document.getElementById('contractorTab').style.backgroundColor = '';
	document.getElementById('contractorLink').style.color = '';
	document.getElementById('contractorLink').style.fontWeight = '';
	document.getElementById('contractorLink').style.textDecoration = '';
}

function showFeaturedHose() {
	document.getElementById('featured').style.visibility = 'visible';
	document.getElementById('featured').style.position = 'static';
	document.getElementById('featuredTab').style.backgroundColor = '#ababab';
	document.getElementById('featuredLink').style.color = '#000';
	document.getElementById('featuredLink').style.fontWeight = 'bold';
	document.getElementById('featuredLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('application').style.visibility = 'hidden';
	document.getElementById('application').style.position = 'absolute';
	document.getElementById('applicationTab').style.backgroundColor = '';
	document.getElementById('applicationLink').style.color = '';
	document.getElementById('applicationLink').style.fontWeight = '';
	document.getElementById('applicationLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
}
function showTechnicalHose() {
	document.getElementById('technical').style.visibility = 'visible';
	document.getElementById('technical').style.position = 'static';
	document.getElementById('technicalTab').style.backgroundColor = '#ababab';
	document.getElementById('technicalLink').style.color = '#000';
	document.getElementById('technicalLink').style.fontWeight = 'bold';
	document.getElementById('technicalLink').style.textDecoration = 'none';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('application').style.visibility = 'hidden';
	document.getElementById('application').style.position = 'absolute';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('applicationTab').style.backgroundColor = '';
	document.getElementById('applicationLink').style.color = '';
	document.getElementById('applicationLink').style.fontWeight = '';
	document.getElementById('applicationLink').style.textDecoration = '';
}
function showApplicationHose() {
	document.getElementById('application').style.visibility = 'visible';
	document.getElementById('application').style.position = 'static';
	document.getElementById('applicationTab').style.backgroundColor = '#ababab';
	document.getElementById('applicationLink').style.color = '#000';
	document.getElementById('applicationLink').style.fontWeight = 'bold';
	document.getElementById('applicationLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
}
function showMaterial312() {
	document.getElementById('materials').style.visibility = 'visible';
	document.getElementById('materials').style.position = 'static';
	document.getElementById('materialsTab').style.backgroundColor = '#ababab';
	document.getElementById('materialsLink').style.color = '#000';
	document.getElementById('materialsLink').style.fontWeight = 'bold';
	document.getElementById('materialsLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';

}
function showFeatured312() {
	document.getElementById('featured').style.visibility = 'visible';
	document.getElementById('featured').style.position = 'static';
	document.getElementById('featuredTab').style.backgroundColor = '#ababab';
	document.getElementById('featuredLink').style.color = '#000';
	document.getElementById('featuredLink').style.fontWeight = 'bold';
	document.getElementById('featuredLink').style.textDecoration = 'none';
	document.getElementById('technical').style.visibility = 'hidden';
	document.getElementById('technical').style.position = 'absolute';
	document.getElementById('materials').style.visibility = 'hidden';
	document.getElementById('materials').style.position = 'absolute';
	document.getElementById('materialsTab').style.backgroundColor = '';
	document.getElementById('materialsLink').style.color = '';
	document.getElementById('materialsLink').style.fontWeight = '';
	document.getElementById('materialsLink').style.textDecoration = '';
	document.getElementById('technicalTab').style.backgroundColor = '';
	document.getElementById('technicalLink').style.color = '';
	document.getElementById('technicalLink').style.fontWeight = '';
	document.getElementById('technicalLink').style.textDecoration = '';
}
function showTechnical312() {
	document.getElementById('technical').style.visibility = 'visible';
	document.getElementById('technical').style.position = 'static';
	document.getElementById('technicalTab').style.backgroundColor = '#ababab';
	document.getElementById('technicalLink').style.color = '#000';
	document.getElementById('technicalLink').style.fontWeight = 'bold';
	document.getElementById('technicalLink').style.textDecoration = 'none';
	document.getElementById('featured').style.visibility = 'hidden';
	document.getElementById('featured').style.position = 'absolute';
	document.getElementById('materials').style.visibility = 'hidden';
	document.getElementById('materials').style.position = 'absolute';
	document.getElementById('featuredTab').style.backgroundColor = '';
	document.getElementById('featuredLink').style.color = '';
	document.getElementById('featuredLink').style.fontWeight = '';
	document.getElementById('featuredLink').style.textDecoration = '';
	document.getElementById('materialsTab').style.backgroundColor = '';
	document.getElementById('materialsLink').style.color = '';
	document.getElementById('materialsLink').style.fontWeight = '';
	document.getElementById('materialsLink').style.textDecoration = '';
}


/* jQuery Mega Menu v1.02
* Last updated: June 29th, 2009. This notice must stay intact for usage 
* Author: JavaScript Kit at http://www.javascriptkit.com/
* Visit http://www.javascriptkit.com/script/script2/jScale/ for full source code
*/


var jkmegamenu = {

    effectduration: 300, //duration of animation, in milliseconds
    delaytimer: 200, //delay after mouseout before menu should be hidden, in milliseconds

    //No need to edit beyond here
    megamenulabels: [],
    megamenus: [], //array to contain each block menu instances
    zIndexVal: 1000, //starting z-index value for drop down menu
    $shimobj: null,

    addshim: function($) {
        $(document.body).append('<IFRAME id="outlineiframeshim" src="' + (location.protocol == "https:" ? 'blank.htm' : 'about:blank') + '" style="display:none; left:0; top:0; z-index:999; position:absolute; filter:progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=0)" frameBorder="0" scrolling="no"></IFRAME>')
        this.$shimobj = $("#outlineiframeshim")
    },

    alignmenu: function($, e, megamenu_pos) {
        var megamenu = this.megamenus[megamenu_pos]
        var $anchor = megamenu.$anchorobj
        var $menu = megamenu.$menuobj
        var menuleft = ($(window).width() - (megamenu.offsetx - $(document).scrollLeft()) > megamenu.actualwidth) ? megamenu.offsetx : megamenu.offsetx - megamenu.actualwidth + megamenu.anchorwidth //get x coord of menu
        //var menutop=($(window).height()-(megamenu.offsety-$(document).scrollTop()+megamenu.anchorheight)>megamenu.actualheight)? megamenu.offsety+megamenu.anchorheight : megamenu.offsety-megamenu.actualheight
        var menutop = megamenu.offsety + megamenu.anchorheight  //get y coord of menu
        $menu.css({ left: menuleft + "px", top: menutop + "px" })
        this.$shimobj.css({ width: megamenu.actualwidth + "px", height: megamenu.actualheight + "px", left: menuleft + "px", top: menutop + "px", display: "block" })
    },

    showmenu: function(e, megamenu_pos) {
        var megamenu = this.megamenus[megamenu_pos]
        var $menu = megamenu.$menuobj
        var $menuinner = megamenu.$menuinner
        if ($menu.css("display") == "none") {
            this.alignmenu(jQuery, e, megamenu_pos)
            $menu.css("z-index", ++this.zIndexVal)
            $menu.show(this.effectduration, function() {
                $menuinner.css('visibility', 'visible')
            })
        }
        else if ($menu.css("display") == "block" && e.type == "click") { //if menu is hidden and this is a "click" event (versus "mouseout")
            this.hidemenu(e, megamenu_pos)
        }
        return false
    },

    hidemenu: function(e, megamenu_pos) {
        var megamenu = this.megamenus[megamenu_pos]
        var $menu = megamenu.$menuobj
        var $menuinner = megamenu.$menuinner
        $menuinner.css('visibility', 'hidden')
        this.$shimobj.css({ display: "none", left: 0, top: 0 })
        $menu.hide(this.effectduration)
    },

    definemenu: function(anchorid, menuid, revealtype) {
        this.megamenulabels.push([anchorid, menuid, revealtype])
    },

    render: function($) {
        for (var i = 0, labels = this.megamenulabels[i]; i < this.megamenulabels.length; i++, labels = this.megamenulabels[i]) {
            if ($('#' + labels[0]).length != 1 || $('#' + labels[1]).length != 1) //if one of the two elements are NOT defined, exist
                return
            this.megamenus.push({ $anchorobj: $("#" + labels[0]), $menuobj: $("#" + labels[1]), $menuinner: $("#" + labels[1]).children('ul:first-child'), revealtype: labels[2], hidetimer: null })
            var megamenu = this.megamenus[i]
            megamenu.$anchorobj.add(megamenu.$menuobj).attr("_megamenupos", i + "pos") //remember index of this drop down menu
            megamenu.actualwidth = megamenu.$menuobj.outerWidth()
            megamenu.actualheight = megamenu.$menuobj.outerHeight()
            megamenu.offsetx = megamenu.$anchorobj.offset().left
            megamenu.offsety = megamenu.$anchorobj.offset().top
            megamenu.anchorwidth = megamenu.$anchorobj.outerWidth()
            megamenu.anchorheight = megamenu.$anchorobj.outerHeight()
            $(document.body).append(megamenu.$menuobj) //move drop down menu to end of document
            megamenu.$menuobj.css("z-index", ++this.zIndexVal).hide()
            megamenu.$menuinner.css("visibility", "hidden")
            megamenu.$anchorobj.bind(megamenu.revealtype == "click" ? "click" : "mouseenter", function(e) {
                var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
                clearTimeout(menuinfo.hidetimer) //cancel hide menu timer
                return jkmegamenu.showmenu(e, parseInt(this.getAttribute("_megamenupos")))
            })
            megamenu.$anchorobj.bind("mouseleave", function(e) {
                var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
                if (e.relatedTarget != menuinfo.$menuobj.get(0) && $(e.relatedTarget).parents("#" + menuinfo.$menuobj.get(0).id).length == 0) { //check that mouse hasn't moved into menu object
                    menuinfo.hidetimer = setTimeout(function() { //add delay before hiding menu
                        jkmegamenu.hidemenu(e, parseInt(menuinfo.$menuobj.get(0).getAttribute("_megamenupos")))
                    }, jkmegamenu.delaytimer)
                }
            })
            megamenu.$menuobj.bind("mouseenter", function(e) {
                var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
                clearTimeout(menuinfo.hidetimer) //cancel hide menu timer
            })
            megamenu.$menuobj.bind("click mouseleave", function(e) {
                var menuinfo = jkmegamenu.megamenus[parseInt(this.getAttribute("_megamenupos"))]
                menuinfo.hidetimer = setTimeout(function() { //add delay before hiding menu
                    jkmegamenu.hidemenu(e, parseInt(menuinfo.$menuobj.get(0).getAttribute("_megamenupos")))
                }, jkmegamenu.delaytimer)
            })
        } //end for loop
        if (/Safari/i.test(navigator.userAgent)) { //if Safari
            $(window).bind("resize load", function() {
                for (var i = 0; i < jkmegamenu.megamenus.length; i++) {
                    var megamenu = jkmegamenu.megamenus[i]
                    var $anchorisimg = (megamenu.$anchorobj.children().length == 1 && megamenu.$anchorobj.children().eq(0).is('img')) ? megamenu.$anchorobj.children().eq(0) : null
                    if ($anchorisimg) { //if anchor is an image link, get offsets and dimensions of image itself, instead of parent A
                        megamenu.offsetx = $anchorisimg.offset().left
                        megamenu.offsety = $anchorisimg.offset().top
                        megamenu.anchorwidth = $anchorisimg.width()
                        megamenu.anchorheight = $anchorisimg.height()
                    }
                }
            })
        }
        else {
            $(window).bind("resize", function() {
                for (var i = 0; i < jkmegamenu.megamenus.length; i++) {
                    var megamenu = jkmegamenu.megamenus[i]
                    megamenu.offsetx = megamenu.$anchorobj.offset().left
                    megamenu.offsety = megamenu.$anchorobj.offset().top
                }
            })
        }
        jkmegamenu.addshim($)
    }

}

jQuery(document).ready(function($) {
    jkmegamenu.render($)
})


function showDiv1(e, b) {
    e = e || window.event;
    if (!b && !e) return;
    if (b) {
        document.getElementById("megamenu1").style.display = "block";
        document.getElementById("megaanchor").className = "hover";
    } else {
        var el = e.srcElement || e.target;
        var isChild = false;
        el = el.parentNode;
        while (el && !isChild) {
            el = el.parentNode;
            if (el && el.id && el.id == "megamenu1")
                isChild = true;
        }
        if (!isChild) {
            document.getElementById("megaanchor").className = "";
        }
    }
}

function showDiv2(e, b) {
    e = e || window.event;
    if (!b && !e) return;
    if (b) {
        document.getElementById("megamenu2").style.display = "block";
        document.getElementById("megaanchor2").className = "hover";
    } else {
        var el = e.srcElement || e.target;
        var isChild = false;
        el = el.parentNode;
        while (el && !isChild) {
            el = el.parentNode;
            if (el && el.id && el.id == "megamenu2")
                isChild = true;
        }
        if (!isChild) {
            document.getElementById("megaanchor2").className = "";
        }
    }
}

function showDiv3(e, b) {
    e = e || window.event;
    if (!b && !e) return;
    if (b) {
        document.getElementById("megamenu3").style.display = "block";
        document.getElementById("megaanchor3").className = "hover";
    } else {
        var el = e.srcElement || e.target;
        var isChild = false;
        el = el.parentNode;
        while (el && !isChild) {
            el = el.parentNode;
            if (el && el.id && el.id == "megamenu3")
                isChild = true;
        }
        if (!isChild) {
            document.getElementById("megaanchor3").className = "";
        }
    }
}

function showDiv4(e, b) {
    e = e || window.event;
    if (!b && !e) return;
    if (b) {
        document.getElementById("megamenu4").style.display = "block";
        document.getElementById("megaanchor4").className = "hover";
    } else {
        var el = e.srcElement || e.target;
        var isChild = false;
        el = el.parentNode;
        while (el && !isChild) {
            el = el.parentNode;
            if (el && el.id && el.id == "megamenu4")
                isChild = true;
        }
        if (!isChild) {
            document.getElementById("megaanchor4").className = "";
        }
    }
}


function showDiv5(e, b) {
    e = e || window.event;
    if (!b && !e) return;
    if (b) {
        document.getElementById("megamenu5").style.display = "block";
        document.getElementById("megaanchor5").className = "hover";
    } else {
        var el = e.srcElement || e.target;
        var isChild = false;
        el = el.parentNode;
        while (el && !isChild) {
            el = el.parentNode;
            if (el && el.id && el.id == "megamenu5")
                isChild = true;
        }
        if (!isChild) {
            document.getElementById("megaanchor5").className = "";
        }
    }
}

jkmegamenu.definemenu("megaanchor", "megamenu1", "mouseover")

jkmegamenu.definemenu("megaanchor2", "megamenu2", "mouseover")

jkmegamenu.definemenu("megaanchor3", "megamenu3", "mouseover")

jkmegamenu.definemenu("megaanchor4", "megamenu4", "mouseover")

jkmegamenu.definemenu("megaanchor5", "megamenu5", "mouseover")





// lightbox_plus.js
// == written by Takuya Otani <takuya.otani@gmail.com> ===
// == Copyright (C) 2006 SimpleBoxes/SerendipityNZ Ltd. ==
/*
	Copyright (C) 2006 Takuya Otani/SimpleBoxes - http://serennz.cool.ne.jp/sb/
	Copyright (C) 2006 SerendipityNZ - http://serennz.cool.ne.jp/snz/
	
	This script is licensed under the Creative Commons Attribution 2.5 License
	http://creativecommons.org/licenses/by/2.5/
	
	basically, do anything you want, just leave my name and link.
*/
/*
	Original script : Lightbox JS : Fullsize Image Overlays
	Copyright (C) 2005 Lokesh Dhakar - http://www.huddletogether.com
	For more information on this script, visit:
	http://huddletogether.com/projects/lightbox/
*/
// ver. 20090729 - fixed a bug ( lightbox may not be closed properly )
// ver. 20090709 - fixed a bug ( loading image is not shown properly )
// ver. 20090707 - implemented animation feature
// ver. 20090318 - fixed a bug ( prev/next are not shown in some occasions )
// ver. 20061027 - fixed a bug ( not work at xhtml documents on Netscape7 )
// ver. 20061026 - fixed bugs
// ver. 20061010 - implemented image set feature
// ver. 20060921 - fixed a bug / added overall view
// ver. 20060920 - added flag to prevent mouse wheel event
// ver. 20060919 - fixed a bug
// ver. 20060918 - implemented functionality of wheel zoom & drag'n drop
// ver. 20060131 - fixed a bug to work correctly on Internet Explorer for Windows
// ver. 20060128 - implemented functionality of echoic word
// ver. 20060120 - implemented functionality of caption and close button
// === elements ===
document.getElemetsByClassName = function(name,target)
{
	var result = [];
	var object  = null;
	var search = new RegExp(['(^|\\s)',name,'(\\s|$)'].join(''));
	if (target && target.getElementsByTagName)
		object = target.getElementsByTagName('*');
	if (!object)
		object = document.getElementsByTagName ? document.getElementsByTagName('*') : document.all;
	for (var i=0,n=object.length;i<n;i++)
	{
		var check = object[i].getAttribute('class') || object[i].className;
		if (check.match(search)) result.push(object[i]);
	}
	return result;
}
// === window ===
function WindowSize()
{ // window size object
	this.w = 0;
	this.h = 0;
	return this;
}
WindowSize.prototype.update = function()
{
	var d = document;
	var w = 
	  (window.innerWidth) ? window.innerWidth
	: (d.documentElement && d.documentElement.clientWidth) ? d.documentElement.clientWidth
	: d.body.clientWidth;
	var h = 
	  (window.innerHeight) ? window.innerHeight
	: (d.documentElement && d.documentElement.clientHeight) ? d.documentElement.clientHeight
	: d.body.clientHeight;
	if (w != this.w || h != this.h)
	{
		this.w = w;
		this.h = h;
		return true;
	}
	return false;
};
function PageSize()
{ // page size object
	this.win = new WindowSize();
	this.w = 0;
	this.h = 0;
	return this;
}
PageSize.prototype.update = function()
{
	var d = document;
	var w = 
	  (window.innerWidth && window.scrollMaxX) ? window.innerWidth + window.scrollMaxX
	: (d.body.scrollWidth > d.body.offsetWidth) ? d.body.scrollWidth
	: d.body.offsetWidt;
	var h = 
	  (window.innerHeight && window.scrollMaxY) ? window.innerHeight + window.scrollMaxY
	: (d.body.scrollHeight > d.body.offsetHeight) ? d.body.scrollHeight
	: d.body.offsetHeight;
	var updated = this.win.update();
	if (w < this.win.w) w = this.win.w;
	if (h < this.win.h) h = this.win.h;
	if (updated || w != this.w || h != this.h)
	{
		this.w = w;
		this.h = h;
		return true;
	}
	return false;
};
function PagePos()
{ // page position object
	this.x = 0;
	this.y = 0;
	return this;
}
PagePos.prototype.update = function()
{
	var d = document;
	var x =
	  (window.pageXOffset) ? window.pageXOffset
	: (d.documentElement && d.documentElement.scrollLeft) ? d.documentElement.scrollLeft
	: (d.body) ? d.body.scrollLeft
	: 0;
	var y =
	  (window.pageYOffset) ? window.pageYOffset
	: (d.documentElement && d.documentElement.scrollTop) ? d.documentElement.scrollTop
	: (d.body) ? d.body.scrollTop
	: 0;
	if (x != this.x || y != this.y)
	{
		this.x = x;
		this.y = y;
		return true;
	}
	return false;
};
// === browser ===
if ( !window.Spica )
{
	var Spica = {};
	Spica.Browser = new function()
	{
		this.name = navigator.userAgent;
		this.isWinIE = this.isMacIE = false;
		this.isGecko = this.name.match(/Gecko\//);
		this.isSafari = this.name.match(/AppleWebKit/);
		this.isSafari3 = (this.name.match(/AppleWebKit\/(\d\d\d)/) && parseInt(RegExp.$1) > 500);
		this.isKHTML = this.isSafari || navigator.appVersion.match(/Konqueror|KHTML/);
		this.isOpera = window.opera;
		if (document.all && !this.isGecko && !this.isSafari && !this.isOpera)
		{
			this.isWinIE = this.name.match(/Win/);
			this.isMacIE = this.name.match(/Mac/);
			this.isNewIE = (this.name.match(/MSIE (\d\.\d)/) && RegExp.$1 > 6.5);
		}
	};
	Spica.Event = {
		cache : false,
		getEvent : function(evnt)
		{
			return (evnt) ? evnt : ((window.event) ? window.event : null);
		},
		getKey : function(evnt)
		{
			if (!evnt) return; // do nothing
			return (evnt.keyCode) ? evnt.keyCode : evnt.charCode;
		},
		stop : function(evnt)
		{
			if (!evnt) return; // do nothing
			try
			{
				evnt.stopPropagation();
			}
			catch(err) {};
			evnt.cancelBubble = true;
			try
			{
				evnt.preventDefault();
			}
			catch(err) {};
			return (evnt.returnValue = false);
		},
		register : function(object, type, handler)
		{
			if (!object) return;
			if (type == 'keypress' && !object.addEventListener) type = 'keydown';
			if (type == 'mousewheel' && Spica.Browser.isGecko) type = 'DOMMouseScroll';
			if (!this.cache) this.cache = [];
			if (object.addEventListener)
			{
				this.cache.push([object,type,handler]);
				object.addEventListener(type, handler, false);
			}
			else if (object.attachEvent)
			{
				this.cache.push([object,type,handler]);
				object.attachEvent('on' + type,handler);
			}
			else
			{
				object['on' + type] = handler;
			}
		},
		deregister : function(object, type, handler)
		{
			if (!object) return;
			if (type == 'keypress' && !object.addEventListener) type = 'keydown';
			if (type == 'mousewheel' && Spica.Browser.isGecko) type = 'DOMMouseScroll';
			if (object.removeEventListener)
				object.removeEventListener(type, handler, false);
			else if (object.detachEvent)
				object.detachEvent('on' + type, handler);
			else
				object['on' + type] = null;
		},
		deregisterAll : function()
		{
			if (!Spica.Event.cache) return
			for (var i=0,n=Spica.Event.cache.length;i<n;i++)
			{
				Spica.Event.deregister(Spica.Event.cache[i]);
				Spica.Event.cache[i][0] = null;
			}
			Spica.Event.cache = false;
		},
		run : function(func)
		{
			if (typeof func != 'function') return;
			(Spica.Browser.isGecko || Spica.Browser.isOpera)
				? this.register(window,'DOMContentLoaded',func)
				: this.register(window,'load',func);
		}
	};
	Spica.Event.register(window, 'unload', Spica.Event.deregisterAll);
} // end of if ( !window.Spica )
// === lightbox ===
function Lightbox(option)
{
	var self = this;
	self._imgs = new Array();
	self._sets = new Array();
	self._wrap = null;
	self._box  = null;
	self._img  = null;
	self._open = -1;
	self._page = new PageSize();
	self._pos  = new PagePos();
	self._zoomimg = null;
	self._expandable = false;
	self._expanded = false;
	self._funcs = {'move':null,'up':null,'drag':null,'wheel':null,'dbl':null};
	self._level = 1;
	self._curpos = {x:0,y:0};
	self._imgpos = {x:0,y:0};
	self._minpos = {x:0,y:0};
	self._expand = option.expandimg;
	self._shrink = option.shrinkimg;
	self._blank = option.blankimg;
	self._resizable = option.resizable;
	self._timer = null;
	self._anim = {step:0, w:50, h:50, a:0, t:0, f:option.animation};
	self._indicator = null;
	self._overall = null;
	self._openedset = null;
	self._prev = null;
	self._next = null;
	self._hiding = [];
	self._first = false;
	self._changed = false;
	return self._init(option);
}
Lightbox.prototype = {
	refresh : function(target)
	{
		if (!target) target = document;
		this._imgs.length = 0;
		this._genListFromLinks(target);
	},
	_init : function(option)
	{
		var self = this;
		var d = document;
		if (!d.getElementsByTagName) return;
		if (Spica.Browser.isMacIE) return self;
		var body = d.getElementsByTagName("body")[0];
		self._wrap = self._createWrapOn(body);
		self._box  = self._createBoxOn(body,option);
		self._img  = self._box.firstChild;
		self._zoomimg = d.getElementById('actionImage');
		if ( !option.skipInit ) self._genListFromLinks(d);
		return self;
	},
	_genListFromLinks : function(d)
	{
		var self = this;
		var links = d.getElementsByTagName("a");
		for (var i=0;i<links.length;i++)
		{
			var anchor = links[i];
			var num = self._imgs.length;
			var rel = String(anchor.getAttribute("rel")).toLowerCase();
			if (!anchor.getAttribute("href") || !rel.match('lightbox')) continue;
			// initialize item
			self._imgs[num] = {
				src:anchor.getAttribute("href"),
				w:-1,
				h:-1,
				title:'',
				cls:anchor.className,
				set:rel
			};
			if (anchor.getAttribute("title"))
				self._imgs[num].title = anchor.getAttribute("title");
			else if ( anchor.firstChild 
			       && anchor.firstChild.getAttribute 
			       && anchor.firstChild.getAttribute("title"))
				self._imgs[num].title = anchor.firstChild.getAttribute("title");
			anchor.onclick = self._genOpener(num); // set closure to onclick event
			if (rel != 'lightbox')
			{
				if (!self._sets[rel]) self._sets[rel] = new Array();
				self._sets[rel].push(num);
			}
		}
	},
	_genOpener : function(num)
	{
		var self = this;
		return function() { self._show(num); return false; }
	},
	_createWrapOn : function(obj)
	{
		var self = this;
		if (!obj) return null;
		// create wrapper object, translucent background
		var wrap = document.createElement('div');
		obj.appendChild(wrap);
		wrap.id = 'overlay';
		wrap.style.display = 'none';
		wrap.style.position = 'fixed';
		wrap.style.top = '0px';
		wrap.style.left = '0px';
		wrap.style.zIndex = '50';
		wrap.style.width = '100%';
		wrap.style.height = '100%';
		if (Spica.Browser.isWinIE) wrap.style.position = 'absolute';
		Spica.Event.register(wrap,"click",function(evt) { self._close(evt); });
		return wrap;
	},
	_createBoxOn : function(obj,option)
	{
		var self = this;
		if (!obj) return null;
		// create lightbox object, frame rectangle
		var box = document.createElement('div');
		obj.appendChild(box);
		box.id = 'lightbox';
		box.style.display = 'none';
		box.style.position = 'absolute';
		box.style.zIndex = '60';
		// create image object to display a target image
		var img = document.createElement('img');
		box.appendChild(img);
		img.id = 'lightboxImage';
		img.width = 200;
		img.height = 200;
		self._set_cursor(img);
		Spica.Event.register(img,'mouseover',function() { self._show_action(); });
		Spica.Event.register(img,'mouseout',function() { self._hide_action(); });
		Spica.Event.register(img,'click',function(evt) { self._close(evt); });
		// create loading image, animated image
		var imag = new Image;
		imag.onload = function() {
			var spin = document.createElement('img');
			box.appendChild(spin);
			spin.id = 'loadingImage';
			spin.src = imag.src;
			spin.style.position = 'absolute';
			spin.style.zIndex = '70';
			self._set_cursor(spin);
			Spica.Event.register(spin,'click',function(evt) { self._close(evt); });
			imag.onload = function(){};
		};
		if (option.loadingimg != '') imag.src = option.loadingimg;
		// create hover navi - prev
		if (option.previmg)
		{
			var prevLink = document.createElement('img');
			box.appendChild(prevLink);
			prevLink.id = 'prevLink';
			prevLink.style.display = 'none';
			prevLink.style.position = 'absolute';
			prevLink.style.left = '9px';
			prevLink.style.zIndex = '70';
			prevLink.src = option.previmg;
			self._prev = prevLink;
			Spica.Event.register(prevLink,'mouseover',function() { self._show_action(); });
			Spica.Event.register(prevLink,'click',function() { self._show_next(-1); });
		}
		// create hover navi - next
		if (option.nextimg)
		{
			var nextLink = document.createElement('img');
			box.appendChild(nextLink);
			nextLink.id = 'nextLink';
			nextLink.style.display = 'none';
			nextLink.style.position = 'absolute';
			nextLink.style.right = '9px';
			nextLink.style.zIndex = '70';
			nextLink.src = option.nextimg;
			self._next = nextLink;
			Spica.Event.register(nextLink,'mouseover',function() { self._show_action(); });
			Spica.Event.register(nextLink,'click',function() { self._show_next(+1); });
		}
		// create zoom indicator
		var zoom = document.createElement('img');
		box.appendChild(zoom);
		zoom.id = 'actionImage';
		zoom.style.display = 'none';
		zoom.style.position = 'absolute';
		zoom.style.top = '15px';
		zoom.style.left = '15px';
		zoom.style.zIndex = '70';
		self._set_cursor(zoom);
		zoom.src = self._expand;
		Spica.Event.register(zoom,'mouseover',function() { self._show_action(); });
		Spica.Event.register(zoom,'click', function() { self._zoom(); });
		// create close button
		if (option.closeimg)
		{
			var btn = document.createElement('img');
			box.appendChild(btn);
			btn.id = 'closeButton';
			btn.style.display = 'inline';
			btn.style.position = 'absolute';
			btn.style.right = '9px';
			btn.style.top = '10px';
			btn.style.zIndex = '80';
			btn.src = option.closeimg;
			self._set_cursor(btn);
			Spica.Event.register(btn,'click',function(evt) { self._close(evt); });
		}
		// caption text
		var caption = document.createElement('span');
		box.appendChild(caption);
		caption.id = 'lightboxCaption';
		caption.style.display = 'none';
		caption.style.position = 'absolute';
		caption.style.zIndex = '80';
		// create effect image
		if (!option.effectpos)
			option.effectpos = {x:0,y:0};
		else
		{
			if (option.effectpos.x == '') option.effectpos.x = 0;
			if (option.effectpos.y == '') option.effectpos.y = 0;
		}
		var effect = new Image;
		effect.onload = function()
		{
			var effectImg = document.createElement('img');
			box.appendChild(effectImg);
			effectImg.id = 'effectImage';
			effectImg.src = effect.src;
			if (option.effectclass) effectImg.className = option.effectclass;
			effectImg.style.position = 'absolute';
			effectImg.style.display = 'none';
			effectImg.style.left = [option.effectpos.x,'px'].join('');;
			effectImg.style.top = [option.effectpos.y,'px'].join('');
			effectImg.style.zIndex = '90';
			self._set_cursor(effectImg);
			Spica.Event.register(effectImg,'click',function() { effectImg.style.display = 'none'; });
		};
		if (option.effectimg != '') effect.src = option.effectimg;
		if (self._resizable)
		{
			var overall = document.createElement('div');
			obj.appendChild(overall);
			overall.id = 'lightboxOverallView';
			overall.style.display = 'none';
			overall.style.position = 'absolute';
			overall.style.zIndex = '70';
			self._overall = overall;
			var indicator = document.createElement('div');
			obj.appendChild(indicator);
			indicator.id = 'lightboxIndicator';
			indicator.style.display = 'none';
			indicator.style.position = 'absolute';
			indicator.style.zIndex = '80';
			self._indicator = indicator;
		}
		return box;
	},
	_set_photo_size : function()
	{
		var self = this;
		if (self._open == -1) return;
		var targ = { w:self._page.win.w - 30, h:self._page.win.h - 30 };
		var zoom = { x:15, y:15 };
		var navi = { p:9, n:9, y:0 };
		if (!self._expanded)
		{ // shrink image with the same aspect
			var orig = { w:self._imgs[self._open].w, h:self._imgs[self._open].h };
			if ( orig.w < 0 ) orig.w = self._img.width;
			if ( orig.h < 0 ) orig.h = self._img.height;
			var ratio = 1.0;
			if ((orig.w >= targ.w || orig.h >= targ.h) && orig.h && orig.w)
				ratio = ((targ.w / orig.w) < (targ.h / orig.h)) ? targ.w / orig.w : targ.h / orig.h;
			self._expandable = (ratio < 1.0) ? true : false;
			self._anim.w = Math.floor(orig.w * ratio);
			self._anim.h = Math.floor(orig.h * ratio);
			if (self._resizable) self._expandable = true;
			if (Spica.Browser.isWinIE) self._box.style.display = "block";
			self._imgpos.x = self._pos.x + (targ.w - self._img.width) / 2;
			self._imgpos.y = self._pos.y + (targ.h - self._img.height) / 2;
			navi.y = Math.floor(self._img.height / 2) - 10;
			self._show_overall(false);
			var loading = document.getElementById('loadingImage');
			if (loading)
			{
				loading.style.left = [(self._img.width - 30) / 2,'px'].join('');
				loading.style.top  = [(self._img.height - 30) / 2,'px'].join('');
			}
		}
		else
		{ // zoomed or actual sized image
			var width  = parseInt(self._imgs[self._open].w * self._level);
			var height = parseInt(self._imgs[self._open].h * self._level);
			self._minpos.x = self._pos.x + targ.w - self._img.width;
			self._minpos.y = self._pos.y + targ.h - self._img.height;
			if (self._img.width <= targ.w)
				self._imgpos.x = self._pos.x + (targ.w - self._img.width) / 2;
			else
			{
				if (self._imgpos.x > self._pos.x) self._imgpos.x = self._pos.x;
				else if (self._imgpos.x < self._minpos.x) self._imgpos.x = self._minpos.x;
				zoom.x = 15 + self._pos.x - self._imgpos.x;
				navi.p = self._pos.x - self._imgpos.x - 5;
				navi.n = self._img.width - self._page.win.w + self._imgpos.x + 25;
				if (Spica.Browser.isWinIE) navi.n -= 10;
			}
			if (self._img.height <= targ.h)
			{
				self._imgpos.y = self._pos.y + (targ.h - self._img.height) / 2;
				navi.y = Math.floor(self._img.height / 2) - 10;
			}
			else
			{
				if (self._imgpos.y > self._pos.y) self._imgpos.y = self._pos.y;
				else if (self._imgpos.y < self._minpos.y) self._imgpos.y = self._minpos.y;
				zoom.y = 15 + self._pos.y - self._imgpos.y;
				navi.y = Math.floor(targ.h / 2) - 10 + self._pos.y - self._imgpos.y;
			}
			self._anim.w = width;
			self._anim.h = height;
			self._show_overall(true);
		}
		self._box.style.left = [self._imgpos.x,'px'].join('');
		self._box.style.top  = [self._imgpos.y,'px'].join('');
		self._zoomimg.style.left = [zoom.x,'px'].join('');
		self._zoomimg.style.top  = [zoom.y,'px'].join('');
		self._wrap.style.left = self._pos.x;
		if (self._prev && self._next)
		{
			self._prev.style.left  = [navi.p,'px'].join('');
			self._next.style.right = [navi.n,'px'].join('');
			self._prev.style.top = self._next.style.top = [navi.y,'px'].join('');
		}
		self._changed = true;
	},
	_show_overall : function(visible)
	{
		var self = this;
		if (self._overall == null) return;
		if (visible)
		{
			if (self._open == -1) return;
			var base = 100;
			var outer = { w:0, h:0, x:0, y:0 };
			var inner = { w:0, h:0, x:0, y:0 };
			var orig = { w:self._img.width , h:self._img.height };
			var targ = { w:self._page.win.w - 30, h:self._page.win.h - 30 };
			var max = orig.w;
			if (max < orig.h) max = orig.h;
			if (max < targ.w) max = targ.w;
			if (max < targ.h) max = targ.h;
			if (max < 1) return;
			outer.w = parseInt(orig.w / max * base);
			outer.h = parseInt(orig.h / max * base);
			inner.w = parseInt(targ.w / max * base);
			inner.h = parseInt(targ.h / max * base);
			outer.x = self._pos.x + targ.w - base - 20;
			outer.y = self._pos.y + targ.h - base - 20;
			inner.x = outer.x - parseInt((self._imgpos.x - self._pos.x) / max * base);
			inner.y = outer.y - parseInt((self._imgpos.y - self._pos.y) / max * base);
			self._overall.style.left = [outer.x,'px'].join('');
			self._overall.style.top  = [outer.y,'px'].join('');
			self._overall.style.width  = [outer.w,'px'].join('');
			self._overall.style.height = [outer.h,'px'].join('');
			self._indicator.style.left = [inner.x,'px'].join('');
			self._indicator.style.top  = [inner.y,'px'].join('');
			self._indicator.style.width  = [inner.w,'px'].join('');
			self._indicator.style.height = [inner.h,'px'].join('');
			self._overall.style.display = 'block'
			self._indicator.style.display = 'block';
		}
		else
		{
			self._overall.style.display = 'none';
			self._indicator.style.display = 'none';
		}
	},
	_set_size : function(onResize)
	{
		var self = this;
		if (self._open == -1) return;
		if (!self._page.update() && !self._pos.update() && !self._changed) return;
		if (Spica.Browser.isWinIE)
		{
			self._wrap.style.width  = [self._page.win.w,'px'].join('');
			self._wrap.style.height = [self._page.win.h,'px'].join('');
			self._wrap.style.top = [self._pos.y,'px'].join('');
		}
		if (onResize) self._set_photo_size();
	},
	_set_cursor : function(obj)
	{
		var self = this;
		if (Spica.Browser.isWinIE && !Spica.Browser.isNewIE) return;
		obj.style.cursor = 'pointer';
	},
	_current_setindex : function()
	{
		var self = this;
		if (!self._openedset) return -1;
		var list = self._sets[self._openedset];
		for (var i=0,n=list.length;i<n;i++)
		{
			if (list[i] == self._open) return i;
		}
		return -1;
	},
	_get_setlength : function()
	{
		var self = this;
		if (!self._openedset) return -1;
		return self._sets[self._openedset].length;
	},
	_show_action : function()
	{
		var self = this;
		if (self._open == -1) return;
		var check = self._current_setindex();
		if (check > -1)
		{
			if (check > 0) self._prev.style.display = 'inline';
			if (check < self._get_setlength() - 1) self._next.style.display = 'inline';
		}
		if (!self._expandable || !self._zoomimg) return;
		self._zoomimg.src = (self._expanded) ? self._shrink : self._expand;
		self._zoomimg.style.display = 'inline';
	},
	_hide_action : function()
	{
		var self = this;
		if (self._zoomimg) self._zoomimg.style.display = 'none';
		if (self._open > -1 && self._expanded) self._dragstop(null);
		if (self._prev) self._prev.style.display = 'none';
		if (self._next) self._next.style.display = 'none';
	},
	_zoom : function()
	{
		var self = this;
		var closeBtn = document.getElementById('closeButton');
		if (self._expanded)
		{
			self._reset_func();
			self._expanded = false;
			if (closeBtn) closeBtn.style.display = 'inline';
		}
		else if (self._open > -1)
		{
			self._level = 1;
			self._imgpos.x = self._pos.x;
			self._imgpos.y = self._pos.y;
			self._expanded = true;
			self._funcs.drag  = function(evt) { self._dragstart(evt) };
			self._funcs.dbl   = function(evt) { self._close(null) };
			if (self._resizable)
			{
				self._funcs.wheel = function(evt) { self._onwheel(evt) };
				Spica.Event.register(self._box,'mousewheel',self._funcs.wheel);
			}
			Spica.Event.register(self._img,'mousedown',self._funcs.drag);
			Spica.Event.register(self._img,'dblclick',self._funcs.dbl);
			self._show_caption(false);
			if (closeBtn) closeBtn.style.display = 'none';
		}
		self._set_photo_size();
		self._show_action();
	},
	_reset_func : function()
	{
		var self = this;
		if (self._funcs.wheel != null) Spica.Event.deregister(self._box,'mousewheel',self._funcs.wheel);
		if (self._funcs.move  != null) Spica.Event.deregister(self._img,'mousemove',self._funcs.move);
		if (self._funcs.up    != null) Spica.Event.deregister(self._img,'mouseup',self._funcs.up);
		if (self._funcs.drag  != null) Spica.Event.deregister(self._img,'mousedown',self._funcs.drag);
		if (self._funcs.dbl   != null) Spica.Event.deregister(self._img,'dblclick',self._funcs.dbl);
		self._funcs = {'move':null,'up':null,'drag':null,'wheel':null,'dbl':null};
	},
	_onwheel : function(evt)
	{
		var self = this;
		var delta = 0;
		evt = Spica.Event.getEvent(evt);
		if (evt.wheelDelta)  delta = event.wheelDelta/-120;
		else if (evt.detail) delta = evt.detail/3;
		if (Spica.Browser.isOpera) delta = - delta;
		var step =
			  (self._level < 1) ? 0.1
			: (self._level < 2) ? 0.25
			: (self._level < 4) ? 0.5
			: 1;
		self._level = (delta > 0) ? self._level + step : self._level - step;
		if (self._level > 8) self._level = 8;
		else if (self._level < 0.5) self._level = 0.5;
		self._set_photo_size();
		return Spica.Event.stop(evt);
	},
	_dragstart : function(evt)
	{
		var self = this;
		evt = Spica.Event.getEvent(evt);
		self._curpos.x = evt.screenX;
		self._curpos.y = evt.screenY;
		self._funcs.move = function(evnt) { self._dragging(evnt); };
		self._funcs.up   = function(evnt) { self._dragstop(evnt); };
		Spica.Event.register(self._img,'mousemove',self._funcs.move);
		Spica.Event.register(self._img,'mouseup',self._funcs.up);
		return Spica.Event.stop(evt);
	},
	_dragging : function(evt)
	{
		var self = this;
		evt = Spica.Event.getEvent(evt);
		self._imgpos.x += evt.screenX - self._curpos.x;
		self._imgpos.y += evt.screenY - self._curpos.y;
		self._curpos.x = evt.screenX;
		self._curpos.y = evt.screenY;
		self._set_photo_size();
		return Spica.Event.stop(evt);
	},
	_dragstop : function(evt)
	{
		var self = this;
		evt = Spica.Event.getEvent(evt);
		if (self._funcs.move  != null) Spica.Event.deregister(self._img,'mousemove',self._funcs.move);
		if (self._funcs.up    != null) Spica.Event.deregister(self._img,'mouseup',self._funcs.up);
		self._funcs.move = null;
		self._funcs.up   = null;
		self._set_photo_size();
		return (evt) ? Spica.Event.stop(evt) : false;
	},
	_show_caption : function(enable)
	{
		var self = this;
		var caption = document.getElementById('lightboxCaption');
		if (!caption) return;
		if (caption.innerHTML.length == 0 || !enable)
		{
			caption.style.display = 'none';
		}
		else
		{ // now display caption
			caption.style.top = [self._img.height + 10,'px'].join(''); // 10 is top margin of lightbox
			caption.style.left = '0px';
			caption.style.width = [self._img.width + 20,'px'].join(''); // 20 is total side margin of lightbox
			caption.style.display = 'block';
		}
	},
	_toggle_wrap : function(flag)
	{
		var self = this;
		self._wrap.style.display = flag ? "block" : "none";
		if (self._hiding.length == 0 && !self._first)
		{ // some objects may overlap on overlay, so we hide them temporarily.
			var tags = ['select','embed','object'];
			for (var i=0,n=tags.length;i<n;i++)
			{
				var elem = document.getElementsByTagName(tags[i]);
				for (var j=0,m=elem.length;j<m;j++)
				{ // check the original value at first. when already hidden, dont touch them
					var check = elem[j].style.visibility;
					if (!check)
					{
						if (elem[j].currentStyle)
							check = elem[j].currentStyle['visibility'];
						else if (document.defaultView)
							check = document.defaultView.getComputedStyle(elem[j],'').getPropertyValue('visibility');
					}
					if (check == 'hidden') continue;
					self._hiding.push(elem[j]);
				}
			}
			self._first = true;
		}
		for (var i=0,n=self._hiding.length;i<n;i++)
			self._hiding[i].style.visibility = flag ? "hidden" : "visible";
		if ( flag )
			self._setOpacity(self._wrap,5);
	},
	_prepare : function(num)
	{
		var self = this;
		if (self._open == -1) return;
		self._set_size(false); // calc and set wrapper size
		self._toggle_wrap(true);
		self._box.style.display = "block";
		self._hide_action();
		self._img.src = self._blank;
		var loading = document.getElementById('loadingImage');
		if (loading) loading.style.display = 'inline';
		var objs = ['effectImage','closeButton','lightboxCaption'];
		for (var i in objs)
		{
			var obj = document.getElementById(objs[i]);
			if (obj) obj.style.display = 'none';
		}
	},
	_show : function(num)
	{
		var self = this;
		var imag = new Image;
		if (num < 0 || num >= self._imgs.length) return;
		self._open = num; // set opened image number
		self._prepare();
		self._set_photo_size();
		imag.onload = function() {
			self._expanded = false;
			if (self._imgs[self._open].w == -1)
			{ // store original image width and height
				self._imgs[self._open].w = imag.width;
				self._imgs[self._open].h = imag.height;
			}
			var caption = document.getElementById('lightboxCaption');
			if (caption)
				try { caption.innerHTML = self._imgs[self._open].title; } catch(e) {}
			self._anim.t = (new Date()).getTime();
			self._timer = window.setInterval( function() { self._run() }, 20);
			self._img.setAttribute('title',self._imgs[self._open].title);
			self._anim.step = ( self._anim.f ) ? 0 : 2;
			self._set_photo_size(); // calc and set lightbox size
			if ( !self._anim.f ) // animator is disabled, so apply immediately
				self._show_image();
			if (self._imgs[self._open].set != 'lightbox')
			{
				var set = self._imgs[self._open].set;
				if (self._sets[set].length > 1) self._openedset = set;
				if (!self._prev || !self._next) self._openedset = null;
			}
		};
		self._expandable = false;
		self._expanded = false;
		self._anim.step = -1;
		imag.src = self._imgs[self._open].src;
	},
	_run : function()
	{
		var self = this;
		var t = (new Date()).getTime();
		if ( t - self._anim.t < 50 ) return;
		self._anim.t = t;
		self._set_size(true);
		if ( self._anim.step == 0 || self._anim.w != self._img.width || self._anim.h != self._img.height )
		{
			self._doResizing();
		}
		else if ( self._anim.step == 1 )
		{
			self._doFadeIn();
		}
		else if ( self._anim.step == 3 )
		{
			self._doFadeOut();
		}
	},
	_show_image : function()
	{
		var self = this;
		if (self._open == -1) return;
		self._img.src = self._imgs[self._open].src;
		var loading = document.getElementById('loadingImage');
		if (loading) loading.style.display = 'none';
		var effect = document.getElementById('effectImage');
		if (effect && (!effect.className || self._imgs[self._open].cls == effect.className))
			effect.style.display = 'block';
		var closeBtn = document.getElementById('closeButton');
		if (closeBtn) closeBtn.style.display = 'inline';
		self._show_caption(true);
	},
	_doResizing : function()
	{
		var self = this;
		var diff = {
			x: ( self._anim.f ) ? Math.floor((self._anim.w - self._img.width) / 3) : 0,
			y: ( self._anim.f ) ? Math.floor((self._anim.h - self._img.height) / 3) : 0
		};
		self._img.width += diff.x;
		self._img.height += diff.y;
		if ( Math.abs(diff.x) < 1 ) self._img.width = self._anim.w;
		if ( Math.abs(diff.y) < 1 ) self._img.height = self._anim.h;
		if ( self._anim.w == self._img.width && self._anim.h == self._img.height )
		{
			self._changed = false;
			self._set_photo_size();
			if ( self._anim.step == 0 )
			{
				self._anim.step = 1; // move on the next stage
				self._anim.a = 0;
				self._show_image();
				self._setOpacity(self._img,self._anim.a);
			}
			else if ( self._anim.step == 2 && !self._expanded)
				self._show_caption(true);
		}
	},
	_doFadeIn : function()
	{
		var self = this;
		self._anim.a += 2;
		if ( self._anim.a > 10 )
		{
			self._anim.step = 2; // move on the next stage
			self._anim.a = 9.9;
		}
		self._setOpacity(self._img,self._anim.a);
	},
	_doFadeOut : function()
	{
		var self = this;
		self._anim.a -= 1;
		if ( self._anim.a < 1 )
		{
			self._anim.step = 2; // finish
			self._anim.a = 0;
			if ( self._timer != null )
			{
				window.clearInterval(self._timer);
				self._timer = null;
			}
			self._toggle_wrap(false);
		}
		self._setOpacity(self._wrap,self._anim.a);
	},
	_setOpacity : function(elem, alpha)
	{
		if (Spica.Browser.isWinIE)
			elem.style.filter = 'alpha(opacity=' + (alpha * 10) + ')';
		else
			elem.style.opacity = alpha / 10;
	},
	_close_box : function()
	{
		var self = this;
		self._open = -1;
		self._openedset = null;
		self._hide_action();
		self._reset_func();
		self._show_overall(false);
		self._box.style.display  = "none";
		if ( !self._anim.f && self._timer != null )
		{
			window.clearInterval(self._timer);
			self._timer = null;
		}
	},
	_show_next : function(direction)
	{
		var self = this;
		if (!self._openedset) return self._close(null);
		var index = self._current_setindex() + direction;
		var targ = self._sets[self._openedset][index];
		self._close_box();
		self._show(targ);
	},
	_close : function(evt)
	{
		var self = this;
		if (evt != null)
		{
			evt = Spica.Event.getEvent(evt);
			var targ = evt.target || evt.srcElement;
			if (targ && targ.getAttribute('id') == 'lightboxImage' && self._expanded) return;
		}
		self._close_box();
		if ( self._anim.f && self._anim.step == 2 )
		{
			self._anim.step = 3;
			self._anim.a = 5;
		}
		else
		{
			self._toggle_wrap(false);
		}
	}
};
Spica.Event.run(function() { 
	var lightbox = new Lightbox({
		loadingimg:'resource/loading.gif',
		expandimg:'resource/expand.gif',
		shrinkimg:'resource/shrink.gif',
		blankimg:'resource/blank.gif',
		previmg:'resource/prev.gif',
		nextimg:'resource/next.gif',
		closeimg:'resource/close.gif',
		effectimg:'resource/zzoop.gif',
		effectpos:{x:-40,y:-20},
		effectclass:'effectable',
		resizable:true,
		animation:true
	});
});


/*
 *
 * Copyright (c) 2004-2005 by Zapatec, Inc.
 * http://www.zapatec.com
 * 1700 MLK Way, Berkeley, California,
 * 94709, U.S.A.
 * All rights reserved.
 *
 *
 */


if(typeof Zapatec=='undefined'){Zapatec=function(){};}
Zapatec.version='07-01';if(typeof Zapatec.zapatecPath=='undefined'){Zapatec.zapatecPath=function(){if(document.documentElement){var aTokens=document.documentElement.innerHTML.match(/<script[^>]+src="([^"]*zapatec(-core|-src)?.js[^"]*)"/i);if(aTokens&&aTokens.length>=2){aTokens=aTokens[1].split('?');aTokens=aTokens[0].split('/');if(Array.prototype.pop){aTokens.pop();}else{aTokens.length-=1;}
return aTokens.length?aTokens.join('/')+'/':'';}}
return'';}();}
if(typeof Zapatec=='undefined'){Zapatec=function(){};}
Zapatec.Utils={};Zapatec.Utils.getAbsolutePos=function(el,scrollOff){var SL=0,ST=0;if(!scrollOff){var is_div=/^div$/i.test(el.tagName);if(is_div&&el.scrollLeft)
SL=el.scrollLeft;if(is_div&&el.scrollTop)
ST=el.scrollTop;}
var r={x:el.offsetLeft-SL,y:el.offsetTop-ST};if(el.offsetParent){var tmp=this.getAbsolutePos(el.offsetParent);r.x+=tmp.x;r.y+=tmp.y;}
return r;};Zapatec.Utils.getElementOffset=function(oEl){var iLeft=iTop=iWidth=iHeight=0;var sTag;if(oEl.getBoundingClientRect){var oRect=oEl.getBoundingClientRect();iLeft=oRect.left;iTop=oRect.top;iWidth=oRect.right-iLeft;iHeight=oRect.bottom-iTop;iLeft+=Zapatec.Utils.getPageScrollX()-2;iTop+=Zapatec.Utils.getPageScrollY()-2;}else{iWidth=oEl.offsetWidth;iHeight=oEl.offsetHeight;var sPos=Zapatec.Utils.getStyleProperty(oEl,'position');if(sPos=='fixed'){iLeft=oEl.offsetLeft+Zapatec.Utils.getPageScrollX();iTop=oEl.offsetTop+Zapatec.Utils.getPageScrollY();}else if(sPos=='absolute'){while(oEl){sTag=oEl.tagName;if(sTag){sTag=sTag.toLowerCase();if(sTag!='body'&&sTag!='html'){iLeft+=parseInt(oEl.offsetLeft,10)||0;iTop+=parseInt(oEl.offsetTop,10)||0;}}
oEl=oEl.offsetParent;sTag=oEl?oEl.tagName:null;if(sTag){sTag=sTag.toLowerCase();if(sTag!='body'&&sTag!='html'){iLeft-=oEl.scrollLeft;iTop-=oEl.scrollTop;}}}}else{var bMoz=(Zapatec.is_gecko&&!Zapatec.is_khtml);var fStyle=Zapatec.Utils.getStyleProperty;var oP=oEl;while(oP){if(bMoz){sTag=oP.tagName;if(sTag){sTag=sTag.toLowerCase();if(sTag=='body'&&!(fStyle(oP,'-moz-box-sizing')=='border-box')){iLeft+=parseInt(fStyle(oP,'border-left-width'));iTop+=parseInt(fStyle(oP,'border-top-width'));}}}
iLeft+=parseInt(oP.offsetLeft,10)||0;iTop+=parseInt(oP.offsetTop,10)||0;oP=oP.offsetParent;}
oP=oEl;while(oP.parentNode){oP=oP.parentNode;sTag=oP.tagName;if(sTag){sTag=sTag.toLowerCase();if(sTag!='body'&&sTag!='html'&&sTag!='tr'){iLeft-=oP.scrollLeft;iTop-=oP.scrollTop;}}}}}
return{left:iLeft,top:iTop,x:iLeft,y:iTop,width:iWidth,height:iHeight};};Zapatec.Utils.getElementOffsetScrollable=function(oEl){var oPos=Zapatec.Utils.getElementOffset(oEl);if(oEl.scrollLeft){oPos.left-=oEl.scrollLeft;oPos.x=oPos.left;}
if(oEl.scrollTop){oPos.top-=oEl.scrollTop;oPos.y=oPos.top;}
return oPos;};Zapatec.Utils.fixBoxPosition=function(box,leave){var screenX=Zapatec.Utils.getPageScrollX();var screenY=Zapatec.Utils.getPageScrollY();var sizes=Zapatec.Utils.getWindowSize();leave=parseInt(leave,10)||0;if(box.x<screenX){box.x=screenX+leave;}
if(box.y<screenY){box.y=screenY+leave;}
if(box.x+box.width>screenX+sizes.width){box.x=screenX+sizes.width-box.width-leave;}
if(box.y+box.height>screenY+sizes.height){box.y=screenY+sizes.height-box.height-leave;}};Zapatec.Utils.isRelated=function(el,evt){evt||(evt=window.event);var related=evt.relatedTarget;if(!related){var type=evt.type;if(type=="mouseover"){related=evt.fromElement;}else if(type=="mouseout"){related=evt.toElement;}}
try{while(related){if(related==el){return true;}
related=related.parentNode;}}catch(e){};return false;};Zapatec.Utils.removeClass=function(el,className){if(!(el&&el.className)){return;}
var cls=el.className.split(" ");var ar=[];for(var i=cls.length;i>0;){if(cls[--i]!=className){ar[ar.length]=cls[i];}}
el.className=ar.join(" ");};Zapatec.Utils.addClass=function(el,className){Zapatec.Utils.removeClass(el,className);el.className+=" "+className;};Zapatec.Utils.replaceClass=function(el,className,withClassName){if(!Zapatec.isHtmlElement(el)||!className){return false;}
el.className.replace(className,withClassName);};Zapatec.Utils.getElement=function(ev){if(Zapatec.is_ie){return window.event.srcElement;}else{return ev.currentTarget;}};Zapatec.Utils.getTargetElement=function(ev){if(Zapatec.is_ie){return window.event.srcElement;}else{return ev.target;}};Zapatec.Utils.getMousePos=function(oEv){oEv||(oEv=window.event);var oPos={pageX:0,pageY:0,clientX:0,clientY:0};if(oEv){var bIsPageX=(typeof oEv.pageX!='undefined');var bIsClientX=(typeof oEv.clientX!='undefined');if(bIsPageX||bIsClientX){if(bIsPageX){oPos.pageX=oEv.pageX;oPos.pageY=oEv.pageY;}else{oPos.pageX=oEv.clientX+Zapatec.Utils.getPageScrollX();oPos.pageY=oEv.clientY+Zapatec.Utils.getPageScrollY();}
if(bIsClientX){oPos.clientX=oEv.clientX;oPos.clientY=oEv.clientY;}else{oPos.clientX=oEv.pageX-Zapatec.Utils.getPageScrollX();oPos.clientY=oEv.pageY-Zapatec.Utils.getPageScrollY();}}}
return oPos;};Zapatec.Utils.stopEvent=function(ev){ev||(ev=window.event);if(ev){if(Zapatec.is_ie){ev.cancelBubble=true;ev.returnValue=false;}else{ev.preventDefault();ev.stopPropagation();}}
return false;};Zapatec.Utils.removeOnUnload=[];Zapatec.Utils.addEvent=function(oElement,sEvent,fListener,bUseCapture){if(oElement.addEventListener){if(!bUseCapture){bUseCapture=false;}
oElement.addEventListener(sEvent,fListener,bUseCapture);}else if(oElement.attachEvent){oElement.detachEvent('on'+sEvent,fListener);oElement.attachEvent('on'+sEvent,fListener);if(bUseCapture){oElement.setCapture(false);}}
Zapatec.Utils.removeOnUnload.push({'element':oElement,'event':sEvent,'listener':fListener,'capture':bUseCapture});};Zapatec.Utils.removeEvent=function(oElement,sEvent,fListener,bUseCapture){if(oElement.removeEventListener){oElement.removeEventListener(sEvent,fListener,bUseCapture);}else if(oElement.detachEvent){oElement.detachEvent('on'+sEvent,fListener);}
for(var iLis=Zapatec.Utils.removeOnUnload.length-1;iLis>=0;iLis--){var oParams=Zapatec.Utils.removeOnUnload[iLis];if(!oParams){continue;}
if(oElement==oParams['element']&&sEvent==oParams['event']&&fListener==oParams['listener']&&bUseCapture==oParams['capture']){Zapatec.Utils.removeOnUnload[iLis]=null;Zapatec.Utils.removeEvent(oParams['element'],oParams['event'],oParams['listener'],oParams['capture']);}}};Zapatec.Utils.createElement=function(type,parent,selectable){var el=null;if(document.createElementNS)
el=document.createElementNS("http://www.w3.org/1999/xhtml",type);else
el=document.createElement(type);if(typeof parent!="undefined"&&parent!=null)
parent.appendChild(el);if(!selectable){if(Zapatec.is_ie)
el.setAttribute("unselectable",true);if(Zapatec.is_gecko)
el.style.setProperty("-moz-user-select","none","");}
return el;};Zapatec.Utils.writeCookie=function(name,value,domain,path,exp_days){value=escape(value);var ck=name+"="+value,exp;if(domain)
ck+=";domain="+domain;if(path)
ck+=";path="+path;if(exp_days){exp=new Date();exp.setTime(exp_days*86400000+exp.getTime());ck+=";expires="+exp.toGMTString();}
document.cookie=ck;};Zapatec.Utils.getCookie=function(name){var pattern=name+"=";var tokenPos=0;while(tokenPos<document.cookie.length){var valuePos=tokenPos+pattern.length;if(document.cookie.substring(tokenPos,valuePos)==pattern){var endValuePos=document.cookie.indexOf(";",valuePos);if(endValuePos==-1){endValuePos=document.cookie.length;}
return unescape(document.cookie.substring(valuePos,endValuePos));}
tokenPos=document.cookie.indexOf(" ",tokenPos)+1;if(tokenPos==0){break;}}
return null;};Zapatec.Utils.makePref=function(obj){function stringify(val){if(typeof val=="object"&&!val)
return"null";else if(typeof val=="number"||typeof val=="boolean")
return val;else if(typeof val=="string")
return'"'+val.replace(/\x22/,"\\22")+'"';else return null;};var txt="",i;for(i in obj)
txt+=(txt?",'":"'")+i+"':"+stringify(obj[i]);return txt;};Zapatec.Utils.loadPref=function(txt){var obj=null;try{eval("obj={"+txt+"}");}catch(e){}
return obj;};Zapatec.Utils.mergeObjects=function(dest,src){for(var i in src)
dest[i]=src[i];};Zapatec.Utils.__wch_id=0;Zapatec.Utils.createWCH=function(oEl){if(!Zapatec.is_ie||Zapatec.is_ie5||Zapatec.is_ie7){return null;}
var sId='WCH'+(++Zapatec.Utils.__wch_id);var sIframe=['<iframe id="',sId,'" scrolling="no" style="background-color: #fff;" frameborder="0" style="z-index:0;position:absolute;visibility:hidden;filter:progid:DXImageTransform.Microsoft.alpha(style=0,opacity=0);border:0;top:0;left:0;width:0;height:0" src="javascript:false"></iframe>'].join('')
if(!oEl){oEl=document.body;}
if(Zapatec.windowLoaded){oEl.insertAdjacentHTML('beforeEnd',sIframe);}else{Zapatec.Utils.addEvent(window,'load',function(){oEl.insertAdjacentHTML('beforeEnd',sIframe);oEl=null;});}
return document.getElementById(sId);};Zapatec.Utils.setupWCH_el=function(f,el,el2){if(f){var pos=Zapatec.Utils.getAbsolutePos(el),X1=pos.x,Y1=pos.y,X2=X1+el.offsetWidth,Y2=Y1+el.offsetHeight;if(el2){var p2=Zapatec.Utils.getAbsolutePos(el2),XX1=p2.x,YY1=p2.y,XX2=XX1+el2.offsetWidth,YY2=YY1+el2.offsetHeight;if(X1>XX1)
X1=XX1;if(Y1>YY1)
Y1=YY1;if(X2<XX2)
X2=XX2;if(Y2<YY2)
Y2=YY2;}
Zapatec.Utils.setupWCH(f,X1,Y1,X2-X1,Y2-Y1);}};Zapatec.Utils.setupWCH=function(f,x,y,w,h){if(f){var s=f.style;(typeof x!="undefined")&&(s.left=x+"px");(typeof y!="undefined")&&(s.top=y+"px");(typeof w!="undefined")&&(s.width=w+"px");(typeof h!="undefined")&&(s.height=h+"px");s.visibility="inherit";}};Zapatec.Utils.hideWCH=function(f){if(f)
f.style.visibility="hidden";};Zapatec.Utils.getPageScrollY=function(){if(window.pageYOffset){return window.pageYOffset;}else if(document.body&&document.body.scrollTop){return document.body.scrollTop;}else if(document.documentElement&&document.documentElement.scrollTop){return document.documentElement.scrollTop;}
return 0;};Zapatec.Utils.getPageScrollX=function(){if(window.pageXOffset){return window.pageXOffset;}else if(document.body&&document.body.scrollLeft){return document.body.scrollLeft;}else if(document.documentElement&&document.documentElement.scrollLeft){return document.documentElement.scrollLeft;}
return 0;};Zapatec.ScrollWithWindow={};Zapatec.ScrollWithWindow.list=[];Zapatec.ScrollWithWindow.stickiness=0.25;Zapatec.ScrollWithWindow.register=function(oElement){var iTop=oElement.offsetTop||0;var iLeft=oElement.offsetLeft||0;Zapatec.ScrollWithWindow.list.push({node:oElement,origTop:iTop,origLeft:iLeft});if(!Zapatec.ScrollWithWindow.interval){Zapatec.ScrollWithWindow.on();}};Zapatec.ScrollWithWindow.unregister=function(oElement){for(var iItem=0;iItem<Zapatec.ScrollWithWindow.list.length;iItem++){var oItem=Zapatec.ScrollWithWindow.list[iItem];if(oElement==oItem.node){Zapatec.ScrollWithWindow.list.splice(iItem,1);if(!Zapatec.ScrollWithWindow.list.length){Zapatec.ScrollWithWindow.off();}
return;}}};Zapatec.ScrollWithWindow.moveTop=function(iTop){Zapatec.ScrollWithWindow.top+=(iTop-Zapatec.ScrollWithWindow.top)*Zapatec.ScrollWithWindow.stickiness;if(Math.abs(Zapatec.ScrollWithWindow.top-iTop)<=1){Zapatec.ScrollWithWindow.top=iTop;}
for(var iItem=0;iItem<Zapatec.ScrollWithWindow.list.length;iItem++){var oItem=Zapatec.ScrollWithWindow.list[iItem];var oElement=oItem.node;oElement.style.position='absolute';if(!oItem.origTop&&oItem.origTop!==0){oItem.origTop=parseInt(oElement.style.top)||0;}
oElement.style.top=oItem.origTop+
parseInt(Zapatec.ScrollWithWindow.top)+'px';}};Zapatec.ScrollWithWindow.moveLeft=function(iLeft){Zapatec.ScrollWithWindow.left+=(iLeft-Zapatec.ScrollWithWindow.left)*Zapatec.ScrollWithWindow.stickiness;if(Math.abs(Zapatec.ScrollWithWindow.left-iLeft)<=1){Zapatec.ScrollWithWindow.left=iLeft;}
for(var iItem=0;iItem<Zapatec.ScrollWithWindow.list.length;iItem++){var oItem=Zapatec.ScrollWithWindow.list[iItem];var oElement=oItem.node;oElement.style.position='absolute';if(!oItem.origLeft&&oItem.origLeft!==0){oItem.origLeft=parseInt(oElement.style.left)||0;}
oElement.style.left=oItem.origLeft+
parseInt(Zapatec.ScrollWithWindow.left)+'px';}};Zapatec.ScrollWithWindow.cycle=function(){var iTop=Zapatec.Utils.getPageScrollY();var iLeft=Zapatec.Utils.getPageScrollX();if(iTop!=Zapatec.ScrollWithWindow.top){Zapatec.ScrollWithWindow.moveTop(iTop);}
if(iLeft!=Zapatec.ScrollWithWindow.left){Zapatec.ScrollWithWindow.moveLeft(iLeft);}};Zapatec.ScrollWithWindow.on=function(){if(Zapatec.ScrollWithWindow.interval){return;}
Zapatec.ScrollWithWindow.top=Zapatec.Utils.getPageScrollY();Zapatec.ScrollWithWindow.left=Zapatec.Utils.getPageScrollX();Zapatec.ScrollWithWindow.interval=setInterval(Zapatec.ScrollWithWindow.cycle,50);};Zapatec.ScrollWithWindow.off=function(){if(!Zapatec.ScrollWithWindow.interval){return;}
clearInterval(Zapatec.ScrollWithWindow.interval);Zapatec.ScrollWithWindow.interval=null;};Zapatec.FixateOnScreen={};Zapatec.FixateOnScreen.getExpression=function(coord,direction){return"Zapatec.Utils.getPageScroll"+direction.toUpperCase()+"() + "+coord;};Zapatec.FixateOnScreen.parseCoordinates=function(element){if(!this.isRegistered(element)){return false;}
var x=0;var y=0;var style=element.style;if(Zapatec.is_ie&&!Zapatec.is_ie7){x=style.getExpression("left").split(" ");x=parseInt(x[x.length-1],10);y=style.getExpression("top").split(" ");y=parseInt(y[y.length-1],10);}else{x=parseInt(style.left,10);y=parseInt(style.top,10);}
x+=Zapatec.Utils.getPageScrollX();y+=Zapatec.Utils.getPageScrollY();return{x:x,y:y};};Zapatec.FixateOnScreen.correctCoordinates=function(x,y){position={x:x,y:y};if(position.x||position.x===0){position.x-=Zapatec.Utils.getPageScrollX();if(Zapatec.is_ie&&!Zapatec.is_ie7){position.x=this.getExpression(position.x,"X");;}else{position.x+="px";}}
if(position.y||position.y===0){position.y-=Zapatec.Utils.getPageScrollY();if(Zapatec.is_ie&&!Zapatec.is_ie7){position.y=this.getExpression(position.y,"Y");;}else{position.y+="px";}}
return position;};Zapatec.FixateOnScreen.register=function(element){if(!Zapatec.isHtmlElement(element)){return false;}
if(this.isRegistered(element)){return true;}
var pos=Zapatec.Utils.getElementOffset(element);pos={x:parseInt(element.style.left,10)||pos.x,y:parseInt(element.style.top,10)||pos.y}
pos=this.correctCoordinates(pos.x,pos.y);if(!Zapatec.is_ie||Zapatec.is_ie7){var restorer=element.restorer;if(!restorer||!restorer.getObject||restorer.getObject()!=element){restorer=element.restorer=new Zapatec.SRProp(element);}
restorer.saveProp("style.position");element.style.position="fixed";element.style.left=pos.x;element.style.top=pos.y;}else{element.style.setExpression("left",pos.x);element.style.setExpression("top",pos.y);}
element.zpFixed=true;return true;};Zapatec.FixateOnScreen.unregister=function(element){if(!Zapatec.isHtmlElement(element)){return false;}
var pos=this.parseCoordinates(element);if(pos===false){return true;}
if(Zapatec.is_ie&&!Zapatec.is_ie7){element.style.removeExpression("left");element.style.removeExpression("top");}
element.style.left=pos.x+"px";element.style.top=pos.y+"px";if(!Zapatec.is_ie||Zapatec.is_ie7){element.restorer.restoreProp("style.position",true);}
element.zpFixed=false;return true;};Zapatec.FixateOnScreen.isRegistered=function(element){if(element.zpFixed){return true;}
return false;};Zapatec.Utils.destroy=function(el){if(el&&el.parentNode)
el.parentNode.removeChild(el);};Zapatec.Utils.newCenteredWindow=function(url,windowName,width,height,scrollbars){var leftPosition=0;var topPosition=0;if(screen.width)
leftPosition=(screen.width-width)/2;if(screen.height)
topPosition=(screen.height-height)/2;var winArgs='height='+height+',width='+width+',top='+topPosition+',left='+leftPosition+',scrollbars='+scrollbars+',resizable';var win=window.open(url,windowName,winArgs);return win;};Zapatec.Utils.getWindowSize=function(){var iWidth=0;var iHeight=0;if(Zapatec.is_opera){iWidth=document.body.clientWidth||0;iHeight=document.body.clientHeight||0;}else if(Zapatec.is_khtml){iWidth=window.innerWidth||0;iHeight=window.innerHeight||0;}else if(document.compatMode&&document.compatMode=='CSS1Compat'){iWidth=document.documentElement.clientWidth||0;iHeight=document.documentElement.clientHeight||0;}else{iWidth=document.body.clientWidth||0;iHeight=document.body.clientHeight||0;}
return{width:iWidth,height:iHeight};};Zapatec.Utils.selectOption=function(sel,val,call_default){var a=sel.options,i,o;for(i=a.length;--i>=0;){o=a[i];o.selected=(o.value==val);}
sel.value=val;if(call_default){if(typeof sel.onchange=="function")
sel.onchange();else if(typeof sel.onchange=="string")
eval(sel.onchange);}};Zapatec.Utils.getNextSibling=function(el,tag,alternateTag){el=el.nextSibling;if(!tag){return el;}
tag=tag.toLowerCase();if(alternateTag)alternateTag=alternateTag.toLowerCase();while(el){if(el.nodeType==1&&(el.tagName.toLowerCase()==tag||(alternateTag&&el.tagName.toLowerCase()==alternateTag))){return el;}
el=el.nextSibling;}
return el;};Zapatec.Utils.getPreviousSibling=function(el,tag,alternateTag){el=el.previousSibling;if(!tag){return el;}
tag=tag.toLowerCase();if(alternateTag)alternateTag=alternateTag.toLowerCase();while(el){if(el.nodeType==1&&(el.tagName.toLowerCase()==tag||(alternateTag&&el.tagName.toLowerCase()==alternateTag))){return el;}
el=el.previousSibling;}
return el;};Zapatec.Utils.getFirstChild=function(el,tag,alternateTag){if(!el){return null;}
el=el.firstChild;if(!el){return null;}
if(!tag){return el;}
tag=tag.toLowerCase();if(el.nodeType==1){if(el.tagName.toLowerCase()==tag){return el;}else if(alternateTag){alternateTag=alternateTag.toLowerCase();if(el.tagName.toLowerCase()==alternateTag){return el;}}}
return Zapatec.Utils.getNextSibling(el,tag,alternateTag);};Zapatec.Utils.getLastChild=function(el,tag,alternateTag){if(!el){return null;}
el=el.lastChild;if(!el){return null;}
if(!tag){return el;}
tag=tag.toLowerCase();if(el.nodeType==1){if(el.tagName.toLowerCase()==tag){return el;}else if(alternateTag){alternateTag=alternateTag.toLowerCase();if(el.tagName.toLowerCase()==alternateTag){return el;}}}
return Zapatec.Utils.getPreviousSibling(el,tag,alternateTag);};Zapatec.Utils.getChildText=function(objNode){if(objNode==null){return'';}
var arrText=[];var objChild=objNode.firstChild;while(objChild!=null){if(objChild.nodeType==3){arrText.push(objChild.data);}
objChild=objChild.nextSibling;}
return arrText.join(' ');};Zapatec.Utils.insertAfter=function(oldNode,newNode){if(oldNode.nextSibling){oldNode.parentNode.insertBefore(newNode,oldNode.nextSibling);}else{oldNode.parentNode.appendChild(newNode);}}
Zapatec.Utils._ids={};Zapatec.Utils.generateID=function(code,id){if(typeof id=="undefined"){if(typeof this._ids[code]=="undefined")
this._ids[code]=0;id=++this._ids[code];}
return"zapatec-"+code+"-"+id;};Zapatec.Utils.addTooltip=function(target,tooltip){return new Zapatec.Tooltip({target:target,tooltip:tooltip});};Zapatec.isLite=true;Zapatec.Utils.checkLinks=function(){var anchors=document.getElementsByTagName('A');for(var ii=0;ii<anchors.length;ii++){if(Zapatec.Utils.checkLink(anchors[ii])){return true;}}
return false;}
Zapatec.Utils.checkLink=function(lnk){if(!lnk){return false;}
if(!/^https?:\/\/((dev|www)\.)?zapatec\.com/i.test(lnk.href)){return false;}
var textContent=""
for(var ii=0;ii<lnk.childNodes.length;ii++){if(lnk.childNodes[ii].nodeType==3){textContent+=lnk.childNodes[ii].nodeValue;}}
if(textContent.length<4){return false;}
var parent=lnk;while(parent&&parent.nodeName.toLowerCase()!="html"){if(Zapatec.Utils.getStyleProperty(parent,"display")=="none"||Zapatec.Utils.getStyleProperty(parent,"visibility")=="hidden"||Zapatec.Utils.getStyleProperty(parent,"opacity")=="0"||Zapatec.Utils.getStyleProperty(parent,"-moz-opacity")=="0"||/alpha\(opacity=0\)/i.test(Zapatec.Utils.getStyleProperty(parent,"filter"))){return false;}
parent=parent.parentNode;}
var coords=Zapatec.Utils.getElementOffset(lnk);if(coords.left<0||coords.top<0){return false;}
return true;}
Zapatec.Utils.checkActivation=function(){if(!Zapatec.isLite)return true;var arrProducts=[]
add_product=function(script,webdir_in,name_in)
{arrProducts[script]={webdir:webdir_in,name:name_in,bActive:false}}
add_product('calendar.js','prod1','Calendar')
add_product('zpmenu.js','menu','Menu')
add_product('tree.js','prod3','Tree')
add_product('form.js','forms','Forms')
add_product('effects.js','effects','Effects')
add_product('hoverer.js','effects','Effects - Hoverer')
add_product('slideshow.js','effects','Effects - Slideshow')
add_product('zpgrid.js','grid','Grid')
add_product('slider.js','slider','Slider')
add_product('zptabs.js','tabs','Tabs')
add_product('zptime.js','time','Time')
add_product('window.js','windows','Window')
var strName,arrName,i
var bProduct=false
var scripts=document.getElementsByTagName('script');for(i=0;i<scripts.length;i++)
{if(/wizard.js/i.test(scripts[i].src))
return true
arrName=scripts[i].src.split('/')
if(arrName.length==0)
strName=scripts[i]
else
strName=arrName[arrName.length-1]
strName=strName.toLowerCase()
if(typeof arrProducts[strName]!='undefined')
{bProduct=true
arrProducts[strName].bActive=true}}
if(!bProduct||Zapatec.Utils.checkLinks()){return true;}
var strMsg='You are using the Free version of the Zapatec Software.\n'+'While using the Free version, a link to www.zapatec.com in this page is required.'
for(i in arrProducts)
if(arrProducts[i].bActive==true)
strMsg+='\nTo purchase the Zapatec '+arrProducts[i].name+' visit www.zapatec.com/website/main/products/'+arrProducts[i].webdir+'/'
return false;}
Zapatec.Utils.clone=function(oSrc){if(typeof oSrc=='object'&&oSrc){var oClone=new oSrc.constructor();var fClone=Zapatec.Utils.clone;for(var sProp in oSrc){oClone[sProp]=fClone(oSrc[sProp]);}
return oClone;}
return oSrc;};Zapatec.is_opera=/opera/i.test(navigator.userAgent);Zapatec.is_ie=(/msie/i.test(navigator.userAgent)&&!Zapatec.is_opera);Zapatec.is_ie5=(Zapatec.is_ie&&/msie 5\.0/i.test(navigator.userAgent));Zapatec.is_ie7=(Zapatec.is_ie&&/msie 7\.0/i.test(navigator.userAgent));Zapatec.is_mac_ie=(/msie.*mac/i.test(navigator.userAgent)&&!Zapatec.is_opera);Zapatec.is_khtml=/Konqueror|Safari|KHTML/i.test(navigator.userAgent);Zapatec.is_konqueror=/Konqueror/i.test(navigator.userAgent);Zapatec.is_gecko=/Gecko/i.test(navigator.userAgent);Zapatec.is_webkit=/WebKit/i.test(navigator.userAgent);Zapatec.webkitVersion=Zapatec.is_webkit?parseInt(navigator.userAgent.replace(/.+WebKit\/([0-9]+)\..+/,"$1")):-1;if(!Object.prototype.hasOwnProperty){Object.prototype.hasOwnProperty=function(strProperty){try{var objPrototype=this.constructor.prototype;while(objPrototype){if(objPrototype[strProperty]==this[strProperty]){return false;}
objPrototype=objPrototype.prototype;}}catch(objException){}
return true;};}
if(!Function.prototype.call){Function.prototype.call=function(){var objThis=arguments[0];objThis._this_func=this;var arrArgs=[];for(var iArg=1;iArg<arguments.length;iArg++){arrArgs[arrArgs.length]='arguments['+iArg+']';}
var ret=eval('objThis._this_func('+arrArgs.join(',')+')');objThis._this_func=null;return ret;};}
if(!Function.prototype.apply){Function.prototype.apply=function(){var objThis=arguments[0];var objArgs=arguments[1];objThis._this_func=this;var arrArgs=[];if(objArgs){for(var iArg=0;iArg<objArgs.length;iArg++){arrArgs[arrArgs.length]='objArgs['+iArg+']';}}
var ret=eval('objThis._this_func('+arrArgs.join(',')+')');objThis._this_func=null;return ret;};}
if(!Array.prototype.pop){Array.prototype.pop=function(){var last;if(this.length){last=this[this.length-1];this.length-=1;}
return last;};}
if(!Array.prototype.push){Array.prototype.push=function(){for(var i=0;i<arguments.length;i++){this[this.length]=arguments[i];}
return this.length;};}
if(!Array.prototype.shift){Array.prototype.shift=function(){var first;if(this.length){first=this[0];for(var i=0;i<this.length-1;i++){this[i]=this[i+1];}
this.length-=1;}
return first;};}
if(!Array.prototype.unshift){Array.prototype.unshift=function(){if(arguments.length){var i,len=arguments.length;for(i=this.length+len-1;i>=len;i--){this[i]=this[i-len];}
for(i=0;i<len;i++){this[i]=arguments[i];}}
return this.length;};}
if(!Array.prototype.splice){Array.prototype.splice=function(index,howMany){var elements=[],removed=[],i;for(i=2;i<arguments.length;i++){elements.push(arguments[i]);}
for(i=index;(i<index+howMany)&&(i<this.length);i++){removed.push(this[i]);}
for(i=index+howMany;i<this.length;i++){this[i-howMany]=this[i];}
this.length-=removed.length;for(i=this.length+elements.length-1;i>=index+elements.length;i--){this[i]=this[i-elements.length];}
for(i=0;i<elements.length;i++){this[index+i]=elements[i];}
return removed;};}
Zapatec.Utils.arrIndexOf=function(aArr,vSearchEl,iFromInd){if(!(aArr instanceof Array)){return-1;}
if(Array.prototype.indexOf){return aArr.indexOf(vSearchEl,iFromInd);}
if(!iFromInd){iFromInd=0;}
var iEls=aArr.length;for(var iEl=iFromInd;iEl<iEls;iEl++){if(aArr[iEl]==vSearchEl){return iEl;}}
return-1;};Zapatec.Log=function(objArgs){if(!objArgs){return;}
var strMessage=objArgs.description;if(objArgs.severity){strMessage=objArgs.severity+':\n'+strMessage;}
if(objArgs.type!="warning"){alert(strMessage);}};Zapatec.Utils.Array={};Zapatec.Utils.Array.insertBefore=function(arr,el,key,nextKey){var tmp=new Array();for(var i in arr){if(i==nextKey){if(key){tmp[key]=el;}else{tmp.push(el);}}
tmp[i]=arr[i];}
return tmp;}
Zapatec.inherit=function(oSubClass,oSuperClass,oArg){var Inheritance=function(){};Inheritance.prototype=oSuperClass.prototype;oSubClass.prototype=new Inheritance();oSubClass.prototype.constructor=oSubClass;oSubClass.SUPERconstructor=oSuperClass;oSubClass.SUPERclass=oSuperClass.prototype;if(typeof oSuperClass.path!='undefined'){if(oArg&&oArg.keepPath){oSubClass.path=oSuperClass.path;}else{oSubClass.path=Zapatec.getPath(oSubClass.id);}}};Zapatec.getPath=function(sId){var sSrc;if(typeof sId=='string'){var oScript=document.getElementById(sId);if(oScript){sSrc=oScript.getAttribute('src');}}
if(!sSrc){if(typeof Zapatec.lastLoadedModule=='string'){return Zapatec.lastLoadedModule;}
if(document.documentElement){var sHtml=document.documentElement.innerHTML;var aMatch=sHtml.match(/<script[^>]+src=[^>]+>/gi);if(aMatch&&aMatch.length){sHtml=aMatch[aMatch.length-1];aMatch=sHtml.match(/src="([^"]+)/i);if(aMatch&&aMatch.length==2){sSrc=aMatch[1];}}}
if(!sSrc){return'';}}
sSrc=sSrc.replace(/\\/g,'/');var aTokens=sSrc.split('?');aTokens=aTokens[0].split('/');aTokens=aTokens.slice(0,-1);if(!aTokens.length){return'';}
return aTokens.join('/')+'/';};Zapatec.Utils.setWindowEvent=function(oEvent){if(oEvent){window.event=oEvent;}};Zapatec.Utils.emulateWindowEvent=function(aEvents){if(document.addEventListener){var iEvents=aEvents.length;var oUtils=Zapatec.Utils;var iEvent;for(iEvent=0;iEvent<iEvents;iEvent++){document.addEventListener(aEvents[iEvent],oUtils.setWindowEvent,true);}}};Zapatec.windowLoaded=typeof(document.readyState)!='undefined'?(document.readyState=='loaded'||document.readyState=='complete'):document.getElementsByTagName!=null&&typeof(document.getElementsByTagName('body')[0])!='undefined';Zapatec.Utils.addEvent(window,"load",function(){Zapatec.windowLoaded=true;});Zapatec.Utils.warnUnload=function(msg,win){Zapatec.Utils.warnUnloadFlag=true;if(typeof(msg)!="string"){msg="All your changes will be lost.";}
if(typeof(win)=='undefined'){win=window;}
Zapatec.Utils.addEvent(win,'beforeunload',function(ev){if(Zapatec.Utils.warnUnloadFlag!=true){return true;}
if(typeof(ev)=='undefined'){ev=window.event;}
ev.returnValue=msg;return false;});}
Zapatec.Utils.unwarnUnload=function(msg,win){Zapatec.Utils.warnUnloadFlag=false;}
Zapatec.Utils.warnUnloadFlag=false;Zapatec.Utils.getMaxZindex=function(){if(window.opera||Zapatec.is_khtml){return 2147483583;}else if(Zapatec.is_ie){return 2147483647;}else{return 10737418239;}};Zapatec.Utils.correctCssLength=function(val){if(typeof val=='undefined'||(typeof val=='object'&&!val)){return'auto';}
val+='';if(!val.length){return'auto';}
if(/\d$/.test(val)){val+='px';}
return val;};Zapatec.Utils.destroyOnUnload=[];Zapatec.Utils.addDestroyOnUnload=function(objElement,strProperty){Zapatec.Utils.destroyOnUnload.push([objElement,strProperty]);};Zapatec.Utils.createProperty=function(objElement,strProperty,val){objElement[strProperty]=val;Zapatec.Utils.addDestroyOnUnload(objElement,strProperty);};Zapatec.Utils.addEvent(window,'unload',function(){for(var iObj=Zapatec.Utils.destroyOnUnload.length-1;iObj>=0;iObj--){var objDestroy=Zapatec.Utils.destroyOnUnload[iObj];objDestroy[0][objDestroy[1]]=null;objDestroy[0]=null;}
for(var iLis=Zapatec.Utils.removeOnUnload.length-1;iLis>=0;iLis--){var oParams=Zapatec.Utils.removeOnUnload[iLis];if(!oParams){continue;}
Zapatec.Utils.removeOnUnload[iLis]=null;Zapatec.Utils.removeEvent(oParams['element'],oParams['event'],oParams['listener'],oParams['capture']);}});Zapatec.Utils.htmlEncode=function(str){str=str.replace(/&/ig,"&amp;");str=str.replace(/</ig,"&lt;");str=str.replace(/>/ig,"&gt;");str=str.replace(/\x22/ig,"&quot;");return str;};Zapatec.Utils.applyStyle=function(elRef,style){if(typeof(elRef)=='string'){elRef=document.getElementById(elRef);}
if(elRef==null||style==null||elRef.style==null){return null;}
if(Zapatec.is_opera){var pairs=style.split(";");for(var ii=0;ii<pairs.length;ii++){var kv=pairs[ii].split(":");if(!kv[1]){continue;}
var value=kv[1].replace(/^\s*/,'').replace(/\s*$/,'');var key="";for(var jj=0;jj<kv[0].length;jj++){if(kv[0].charAt(jj)=="-"){jj++;if(jj<kv[0].length){key+=kv[0].charAt(jj).toUpperCase();}
continue;}
key+=kv[0].charAt(jj);}
switch(key){case"float":key="cssFloat";break;}
try{elRef.style[key]=value;}catch(e){}}}else{elRef.style.cssText=style;}
return true;}
Zapatec.Utils.getStyleProperty=function(oEl,sPr){var oDV=document.defaultView;if(oDV&&oDV.getComputedStyle){var oCS=oDV.getComputedStyle(oEl,'');if(oCS){sPr=sPr.replace(/([A-Z])/g,'-$1').toLowerCase();return oCS.getPropertyValue(sPr);}}else if(oEl.currentStyle){return oEl.currentStyle[sPr];}
return oEl.style[sPr];};Zapatec.Utils.getPrecision=function(dFloat){return(dFloat+'').replace(/^-?\d*\.*/,'').length;};Zapatec.Utils.setPrecision=function(dFloat,iPrecision){dFloat*=1;if(dFloat.toFixed){return dFloat.toFixed(iPrecision)*1;}
var iPow=Math.pow(10,iPrecision);return parseInt(dFloat*iPow,10)/iPow;};Zapatec.Utils.setPrecisionString=function(dFloat,iPrecision){var sFloat=Zapatec.Utils.setPrecision(dFloat,iPrecision)+'';var iOldPrecision=Zapatec.Utils.getPrecision(sFloat);var iZeros=iPrecision-iOldPrecision;if(iZeros){if(!iOldPrecision){sFloat+='.';}
for(var iZero=0;iZero<iZeros;iZero++){sFloat+='0';}}
return sFloat;};Zapatec.Utils.createNestedHash=function(parent,keys,value){if(parent==null||keys==null){return null;}
var tmp=parent;for(var ii=0;ii<keys.length;ii++){if(typeof(tmp[keys[ii]])=='undefined'){tmp[keys[ii]]={};}
if(ii==keys.length-1&&typeof(value)!='undefined'){tmp[keys[ii]]=value;}
tmp=tmp[keys[ii]];}}
Zapatec.implement=function(classOrObject,interfaceStr){if(typeof interfaceStr!="string"){return false;}
if(typeof classOrObject=="function"){classOrObject=classOrObject.prototype;}
if(!classOrObject||typeof classOrObject!="object"){return false;}
var interfaceObj=window;var objs=interfaceStr.split(".");try{for(var i=0;i<objs.length;++i){interfaceObj=interfaceObj[objs[i]];}}catch(e){return false;}
if(typeof classOrObject.interfaces!="object"){classOrObject.interfaces={};classOrObject.interfaces[interfaceStr]=true;}else if(classOrObject.interfaces[interfaceStr]!==true){classOrObject.interfaces=Zapatec.Utils.clone(classOrObject.interfaces);classOrObject.interfaces[interfaceStr]=true;}else{return true;}
for(var iProp in interfaceObj){classOrObject[iProp]=interfaceObj[iProp];}
classOrObject.hasInterface=function(interfaceStr){if(this.interfaces[interfaceStr]===true){return true;}
return false;};classOrObject.requireInterface=function(interfaceStr){if(!this.hasInterface(interfaceStr)){Zapatec.Log({description:"The object with ID '"+this.id+"' has no "+interfaceStr+" interface!"});return false;}
return true;};interfaceObj.setNamedProperty=classOrObject.setNamedProperty=function(name,val){this[name]=val;};interfaceObj.getNamedProperty=classOrObject.getNamedProperty=function(name){return this[name];};return true;};Zapatec.Utils.getCharFromEvent=function(evt){if(!evt){evt=window.event;}
var response={};if(Zapatec.is_gecko&&!Zapatec.is_khtml&&evt.type!="keydown"&&evt.type!="keyup"){if(evt.charCode){response.chr=String.fromCharCode(evt.charCode);}else{response.charCode=evt.keyCode;}}else{response.charCode=evt.keyCode||evt.which;response.chr=String.fromCharCode(response.charCode);}
if(Zapatec.is_opera&&response.charCode==0){response.charCode=null;response.chr=null;}
if(Zapatec.is_khtml&&response.charCode==63272){response.charCode=46;response.chr=null;}
return response;}
Zapatec.Utils.convertHTML2DOM=function(txt){var el=document.createElement("div");el.innerHTML=txt;var currEl=el.firstChild;while(!currEl.nodeType||currEl.nodeType!=1){currEl=currEl.nextSibling;}
Zapatec.Utils.destroy(currEl);return currEl;};Zapatec.Utils.escapeRegExp=function(s){return s.replace(/([.*+?^${}()|[\]\/\\])/g,'\\$1');};if(typeof Zapatec=='undefined'){Zapatec=function(){};}
Zapatec.EventDriven=function(){};Zapatec.EventDriven.prototype.init=function(){this.events={};};Zapatec.EventDriven.prototype.addEventListener=function(sEv,fLsnr){if(typeof fLsnr!="function"){return false;}
var oE=this.events;if(!oE[sEv]){oE[sEv]={listeners:[]};}else{this.removeEventListener(sEv,fLsnr);}
oE[sEv].listeners.push(fLsnr);};Zapatec.EventDriven.prototype.unshiftEventListener=function(sEv,fLsnr){if(typeof fLsnr!="function"){return false;}
var oE=this.events;if(!oE[sEv]){oE[sEv]={listeners:[]};}else{this.removeEventListener(sEv,fLsnr);}
oE[sEv].listeners.unshift(fLsnr);};Zapatec.EventDriven.prototype.removeEventListener=function(sEv,fLsnr){var oE=this.events;if(!oE[sEv]){return 0;}
var aL=oE[sEv].listeners;var iRemoved=0;for(var iL=aL.length-1;iL>=0;iL--){if(aL[iL]==fLsnr){aL.splice(iL,1);iRemoved++;}}
return iRemoved;};Zapatec.EventDriven.prototype.getEventListeners=function(sEv){var oE=this.events;if(!oE[sEv]){return[];}
return oE[sEv].listeners;};Zapatec.EventDriven.prototype.isEventListener=function(sEv,fLsnr){var oE=this.events;if(!oE[sEv]){return false;}
var aL=oE[sEv].listeners;for(var iL=aL.length-1;iL>=0;iL--){if(aL[iL]==fLsnr){return true;}}
return false;};Zapatec.EventDriven.prototype.isEvent=function(sEv){if(this.events[sEv]){return true;}
return false;};Zapatec.EventDriven.prototype.removeEvent=function(sEv){var oE=this.events;if(oE[sEv]){var undef;oE[sEv]=undef;}};Zapatec.EventDriven.prototype.fireEvent=function(sEv){var oE=this.events;if(!oE[sEv]){return;}
var aL=oE[sEv].listeners.slice();var iLs=aL.length;var aArgs;for(var iL=0;iLs--;iL++){aArgs=[].slice.call(arguments,1);aL[iL].apply(this,aArgs);}};Zapatec.EventDriven.events={};Zapatec.EventDriven.addEventListener=function(sEv,fLsnr){if(typeof fLsnr!="function"){return false;}
var oED=Zapatec.EventDriven;var oE=oED.events;if(!oE[sEv]){oE[sEv]={listeners:[]};}else{oED.removeEventListener(sEv,fLsnr);}
oE[sEv].listeners.push(fLsnr);};Zapatec.EventDriven.unshiftEventListener=function(sEv,fLsnr){if(typeof fLsnr!="function"){return false;}
var oED=Zapatec.EventDriven;var oE=oED.events;if(!oE[sEv]){oE[sEv]={listeners:[]};}else{oED.removeEventListener(sEv,fLsnr);}
oE[sEv].listeners.unshift(fLsnr);};Zapatec.EventDriven.removeEventListener=function(sEv,fLsnr){var oE=Zapatec.EventDriven.events;if(!oE[sEv]){return 0;}
var aL=oE[sEv].listeners;var iRemoved=0;for(var iL=aL.length-1;iL>=0;iL--){if(aL[iL]==fLsnr){aL.splice(iL,1);iRemoved++;}}
return iRemoved;};Zapatec.EventDriven.getEventListeners=function(sEv){var oE=Zapatec.EventDriven.events;if(!oE[sEv]){return[];}
return oE[sEv].listeners;};Zapatec.EventDriven.isEventListener=function(sEv,fLsnr){var oE=Zapatec.EventDriven.events;if(!oE[sEv]){return false;}
var aL=oE[sEv].listeners;for(var iL=aL.length-1;iL>=0;iL--){if(aL[iL]==fLsnr){return true;}}
return false;};Zapatec.EventDriven.isEvent=function(sEv){if(Zapatec.EventDriven.events[sEv]){return true;}
return false;};Zapatec.EventDriven.removeEvent=function(sEv){var oE=Zapatec.EventDriven.events;if(oE[sEv]){var undef;oE[sEv]=undef;}};Zapatec.EventDriven.fireEvent=function(sEv){var oE=Zapatec.EventDriven.events;if(!oE[sEv]){return;}
var aL=oE[sEv].listeners.slice();var iLs=aL.length;var aArgs;for(var iL=0;iLs--;iL++){aArgs=[].slice.call(arguments,1);aL[iL].apply(aL[iL],aArgs);}};Zapatec.ImagePreloader=function(objArgs){this.job=null;this.image=null;if(arguments.length>0)this.init(objArgs);};Zapatec.ImagePreloader.prototype.init=function(objArgs){if(!objArgs||!objArgs.job){return;}
this.job=objArgs.job;this.image=new Image();this.job.images.push(this.image);var objPreloader=this;this.image.onload=function(){objPreloader.job.loadedUrls.push(objArgs.url);setTimeout(function(){objPreloader.onLoad();},0);};this.image.onerror=function(){objPreloader.job.invalidUrls.push(objArgs.url);objPreloader.onLoad();};this.image.onabort=function(){objPreloader.job.abortedUrls.push(objArgs.url);objPreloader.onLoad();};this.image.src=objArgs.url;if(typeof objArgs.timeout=='number'){setTimeout(function(){if(objPreloader.job){if(objPreloader.image.complete){objPreloader.job.loadedUrls.push(objArgs.url);}else{objPreloader.job.abortedUrls.push(objArgs.url);}
objPreloader.onLoad();}},objArgs.timeout);}};Zapatec.ImagePreloader.prototype.onLoad=function(){if(!this.job){return;}
this.image.onload=null;this.image.onerror=null;this.image.onabort=null;var objJob=this.job;this.job=null;objJob.leftToLoad--;if(objJob.leftToLoad==0&&typeof objJob.onLoad=='function'){var funcOnLoad=objJob.onLoad;objJob.onLoad=null;funcOnLoad(objJob);}};Zapatec.PreloadImages=function(objArgs){this.images=[];this.leftToLoad=0;this.loadedUrls=[];this.invalidUrls=[];this.abortedUrls=[];this.onLoad=null;if(arguments.length>0)this.init(objArgs);};Zapatec.PreloadImages.prototype.init=function(objArgs){if(!objArgs){return;}
if(!objArgs.urls||!objArgs.urls.length){if(typeof objArgs.onLoad=='function'){objArgs.onLoad(this);}
return;}
this.images=[];this.leftToLoad=objArgs.urls.length;this.loadedUrls=[];this.invalidUrls=[];this.abortedUrls=[];this.onLoad=objArgs.onLoad;for(var iUrl=0;iUrl<objArgs.urls.length;iUrl++){new Zapatec.ImagePreloader({job:this,url:objArgs.urls[iUrl],timeout:objArgs.timeout});}};if(typeof Zapatec=='undefined'){Zapatec=function(){};}
Zapatec.StyleSheet=function(bUseLast){if(bUseLast){if(document.createStyleSheet){if(document.styleSheets.length){this.styleSheet=document.styleSheets[document.styleSheets.length-1];}}else{var aStyleSheets=document.getElementsByTagName('style');if(aStyleSheets.length){this.styleSheet=aStyleSheets[aStyleSheets.length-1];}}}
if(!this.styleSheet){if(document.createStyleSheet){try{this.styleSheet=document.createStyleSheet();}catch(oException){this.styleSheet=document.styleSheets[document.styleSheets.length-1];};}else{this.styleSheet=document.createElement('style');this.styleSheet.type='text/css';var oHead=document.getElementsByTagName('head')[0];if(!oHead){oHead=document.documentElement;}
if(oHead){oHead.appendChild(this.styleSheet);}}}};Zapatec.StyleSheet.prototype.addRule=function(strSelector,strDeclarations){if(!this.styleSheet){return;}
if(document.createStyleSheet){this.styleSheet.cssText+=strSelector+' { '+strDeclarations+' }';}else{this.styleSheet.appendChild(document.createTextNode(strSelector+' { '+strDeclarations+' }'));}};Zapatec.StyleSheet.prototype.removeRules=function(){if(!this.styleSheet){return;}
if(document.createStyleSheet){var iRules=this.styleSheet.rules.length;for(var iRule=0;iRule<iRules;iRule++){this.styleSheet.removeRule();}}else{while(this.styleSheet.firstChild){this.styleSheet.removeChild(this.styleSheet.firstChild);}}};Zapatec.StyleSheet.prototype.addParse=function(strStyleSheet){var arrClean=[];var arrTokens=strStyleSheet.split('/*');for(var iTok=0;iTok<arrTokens.length;iTok++){var arrTails=arrTokens[iTok].split('*/');arrClean.push(arrTails[arrTails.length-1]);}
strStyleSheet=arrClean.join('');strStyleSheet=strStyleSheet.replace(/@[^{]*;/g,'');var arrStyles=strStyleSheet.split('}');for(var iStl=0;iStl<arrStyles.length;iStl++){var arrRules=arrStyles[iStl].split('{');if(arrRules[0]&&arrRules[1]){var arrSelectors=arrRules[0].split(',');for(var iSel=0;iSel<arrSelectors.length;iSel++){this.addRule(arrSelectors[iSel],arrRules[1]);}}}};if(typeof Zapatec=='undefined'){Zapatec=function(){};}
Zapatec.Transport=function(){};if(typeof ActiveXObject!='undefined'){Zapatec.Transport.XMLDOM=null;Zapatec.Transport.XMLHTTP=null;Zapatec.Transport.pickActiveXVersion=function(aVersions){for(var iVn=0;iVn<aVersions.length;iVn++){try{var oDoc=new ActiveXObject(aVersions[iVn]);if(oDoc){return aVersions[iVn];}}catch(oExpn){};}
return null;};Zapatec.Transport.XMLDOM=Zapatec.Transport.pickActiveXVersion(['Msxml2.DOMDocument.4.0','Msxml2.DOMDocument.3.0','MSXML2.DOMDocument','MSXML.DOMDocument','Microsoft.XMLDOM']);Zapatec.Transport.XMLHTTP=Zapatec.Transport.pickActiveXVersion(['Msxml2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','Microsoft.XMLHTTP']);Zapatec.Transport.pickActiveXVersion=null;}
Zapatec.Transport.createXmlHttpRequest=function(){if(typeof ActiveXObject!='undefined'){try{return new ActiveXObject(Zapatec.Transport.XMLHTTP);}catch(oExpn){};}
if(typeof XMLHttpRequest!='undefined'){return new XMLHttpRequest();}
return null;};Zapatec.Transport.isBusy=function(oArg){var oContr=oArg.busyContainer;if(typeof oContr=='string'){oContr=document.getElementById(oContr);}
if(!oContr){return;}
var sImage=oArg.busyImage;if(typeof sImage!='string'){sImage='';}
sImage=sImage.split('/').pop();if(!sImage.length){sImage='zpbusy.gif';}
var oFC=oContr.firstChild;if(oFC){oFC=oFC.firstChild;if(oFC){oFC=oFC.firstChild;if(oFC&&oFC.tagName&&oFC.tagName.toLowerCase()=='img'){var sSrc=oFC.getAttribute('src');if(typeof sSrc=='string'&&sSrc.length){sSrc=sSrc.split('/').pop();if(sSrc==sImage){return true;}}}}}
return false;};Zapatec.Transport.showBusy=function(oArg){if(Zapatec.Transport.isBusy(oArg)){return;}
var oContr=oArg.busyContainer;if(typeof oContr=='string'){oContr=document.getElementById(oContr);}
if(!oContr){return;}
var sImage=oArg.busyImage;var sImageWidth=oArg.busyImageWidth;var sImageHeight=oArg.busyImageHeight;if(typeof sImage!='string'||!sImage.length){sImage='zpbusy.gif';}else{if(typeof sImageWidth=='number'||(typeof sImageWidth=='string'&&/\d$/.test(sImageWidth))){sImageWidth+='px';}
if(typeof sImageHeight=='number'||(typeof sImageHeight=='string'&&/\d$/.test(sImageHeight))){sImageHeight+='px';}}
if(!sImageWidth){sImageWidth='65px';}
if(!sImageHeight){sImageHeight='35px';}
var sPath='';if(sImage.indexOf('/')<0){if(Zapatec.zapatecPath){sPath=Zapatec.zapatecPath;}else{sPath=Zapatec.Transport.getPath('transport.js');}}
var aImg=[];aImg.push('<img src="');aImg.push(sPath);aImg.push(sImage);aImg.push('"');if(sImageWidth||sImageHeight){aImg.push(' style="');if(sImageWidth){aImg.push('width:');aImg.push(sImageWidth);aImg.push(';');}
if(sImageHeight){aImg.push('height:');aImg.push(sImageHeight);}
aImg.push('"');}
aImg.push(' />');var iContainerWidth=oContr.offsetWidth;var iContainerHeight=oContr.offsetHeight;var oBusyContr=Zapatec.Utils.createElement('div');oBusyContr.style.position='relative';oBusyContr.style.zIndex=2147483583;var oBusy=Zapatec.Utils.createElement('div',oBusyContr);oBusy.style.position='absolute';oBusy.innerHTML=aImg.join('');oContr.insertBefore(oBusyContr,oContr.firstChild);var iBusyWidth=oBusy.offsetWidth;var iBusyHeight=oBusy.offsetHeight;if(iContainerWidth>iBusyWidth){oBusy.style.left=oContr.scrollLeft+
(iContainerWidth-iBusyWidth)/2+'px';}
if(iContainerHeight>iBusyHeight){oBusy.style.top=oContr.scrollTop+
(iContainerHeight-iBusyHeight)/2+'px';}};Zapatec.Transport.removeBusy=function(oArg){var oContr=oArg.busyContainer;if(typeof oContr=='string'){oContr=document.getElementById(oContr);}
if(!oContr){return;}
if(Zapatec.Transport.isBusy(oArg)){oContr.removeChild(oContr.firstChild);}};Zapatec.Transport.fetch=function(oArg){if(oArg==null||typeof oArg!='object'){return null;}
if(!oArg.url){return null;}
if(!oArg.method){oArg.method='GET';}
if(typeof oArg.async=='undefined'){oArg.async=true;}
if(!oArg.contentType&&oArg.method.toUpperCase()=='POST'){oArg.contentType='application/x-www-form-urlencoded';}
if(!oArg.content){oArg.content=null;}
if(!oArg.onLoad){oArg.onLoad=null;}
if(!oArg.onError){oArg.onError=null;}
var oRequest=Zapatec.Transport.createXmlHttpRequest();if(oRequest==null){return null;}
Zapatec.Transport.showBusy(oArg);var bErrorDisplayed=false;var funcOnReady=function(){Zapatec.Transport.removeBusy(oArg);try{if(oRequest.status==200||oRequest.status==304||(location.protocol=='file:'&&!oRequest.status)){if(typeof oArg.onLoad=='function'){oArg.onLoad(oRequest);}}else if(!bErrorDisplayed){bErrorDisplayed=true;Zapatec.Transport.displayError(oRequest.status,"Error: Can't fetch "+oArg.url+'.\n'+
(oRequest.statusText||''),oArg.onError);}}catch(oExpn){if(!bErrorDisplayed){bErrorDisplayed=true;if(oExpn.name&&oExpn.name=='NS_ERROR_NOT_AVAILABLE'){Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\nFile not found.',oArg.onError);}else{Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\n'+
(oExpn.message||''),oArg.onError);}}};};try{if(typeof oArg.username!='undefined'&&typeof oArg.password!='undefined'){oRequest.open(oArg.method,oArg.url,oArg.async,oArg.username,oArg.password);}else{oRequest.open(oArg.method,oArg.url,oArg.async);}
if(oArg.async){oRequest.onreadystatechange=function(){if(oRequest.readyState==4){funcOnReady();oRequest.onreadystatechange={};}};}
if(oArg.contentType){oRequest.setRequestHeader('Content-Type',oArg.contentType);}
oRequest.send(oArg.content);if(!oArg.async){funcOnReady();return oRequest;}}catch(oExpn){Zapatec.Transport.removeBusy(oArg);if(!bErrorDisplayed){bErrorDisplayed=true;if(oExpn.name&&oExpn.name=='NS_ERROR_FILE_NOT_FOUND'){Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\nFile not found.',oArg.onError);}else{Zapatec.Transport.displayError(0,"Error: Can't fetch "+oArg.url+'.\n'+
(oExpn.message||''),oArg.onError);}}};return null;};Zapatec.Transport.parseHtml=function(sHtml){sHtml+='';sHtml=sHtml.replace(/^\s+/g,'');var oTmpContr;if(document.createElementNS){oTmpContr=document.createElementNS('http://www.w3.org/1999/xhtml','div');}else{oTmpContr=document.createElement('div');}
oTmpContr.innerHTML=sHtml;return oTmpContr;};Zapatec.Transport.evalGlobalScope=function(sScript){if(typeof sScript!='string'||!sScript.match(/\S/)){return;}
if(window.execScript){window.execScript(sScript,'javascript');}else if(window.eval){window.eval(sScript);}};Zapatec.Transport.setInnerHtml=function(oArg){if(!oArg||typeof oArg.html!='string'){return;}
var sHtml=oArg.html;var oContr=null;if(typeof oArg.container=='string'){oContr=document.getElementById(oArg.container);}else if(typeof oArg.container=='object'){oContr=oArg.container;}
var aScripts=[];if(sHtml.match(/<\s*\/\s*script\s*>/i)){var aTokens=sHtml.split(/<\s*\/\s*script\s*>/i);var aHtml=[];for(var iToken=aTokens.length-1;iToken>=0;iToken--){var sToken=aTokens[iToken];if(sToken.match(/\S/)){var aMatch=sToken.match(/<\s*script([^>]*)>/i);if(aMatch){var aCouple=sToken.split(/<\s*script[^>]*>/i);while(aCouple.length<2){if(sToken.match(/^<\s*script[^>]*>/i)){aCouple.unshift('');}else{aCouple.push('');}}
aHtml.unshift(aCouple[0]);var sAttrs=aMatch[1];var srtScript=aCouple[1];if(sAttrs.match(/\s+src\s*=/i)){srtScript='';}else{srtScript=srtScript.replace(/function\s+([^(]+)/g,'$1=function');}
aScripts.push([sAttrs,srtScript]);}else if(iToken<aTokens.length-1){aTokens[iToken-1]+='</script>'+sToken;}else{aHtml.unshift(sToken);}}else{aHtml.unshift(sToken);}}
sHtml=aHtml.join('');}
if(oContr){if(window.opera){oContr.innerHTML='<form></form>';}
oContr.innerHTML=sHtml;}
for(var iScript=0;iScript<aScripts.length;iScript++){if(aScripts[iScript][1].length){Zapatec.Transport.evalGlobalScope(aScripts[iScript][1]);}
var sAttrs=aScripts[iScript][0];sAttrs=sAttrs.replace(/\s+/g,' ').replace(/^\s/,'').replace(/\s$/,'').replace(/ = /g,'=');if(sAttrs.indexOf('src=')>=0){var oContr=document.body;if(!oContr){oContr=document.getElementsByTagName('head')[0];if(!oContr){oContr=document;}}
var aAttrs=sAttrs.split(' ');var oScript=Zapatec.Utils.createElement('script');for(var iAttr=0;iAttr<aAttrs.length;iAttr++){var aAttr=aAttrs[iAttr].split('=');if(aAttr.length>1){oScript.setAttribute(aAttr[0],aAttr[1].match(/^[\s|"|']*([\s|\S]*[^'|"])[\s|"|']*$/)[1]);}else{oScript.setAttribute(aAttr[0],aAttr[0]);}}
oContr.appendChild(oScript);}}};Zapatec.Transport.fetchXmlDoc=function(oArg){if(oArg==null||typeof oArg!='object'){return null;}
if(!oArg.url){return null;}
if(typeof oArg.async=='undefined'){oArg.async=true;}
if(!oArg.onLoad){oArg.onLoad=null;}
if(!oArg.onError){oArg.onError=null;}
if(!oArg.method&&typeof oArg.username=='undefined'&&typeof oArg.password=='undefined'){if(document.implementation&&document.implementation.createDocument){var oDoc=null;if(!oArg.reliable){oArg.reliable=false;}
var oFetchArg={};for(var sKey in oArg){oFetchArg[sKey]=oArg[sKey];}
if(oArg.async){oFetchArg.onLoad=function(oRequest){oFetchArg.onLoad=null;var parser=new DOMParser();oDoc=parser.parseFromString(oRequest.responseText,"text/xml");Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);};}else{oFetchArg.onLoad=null;}
var oRequest=Zapatec.Transport.fetch(oFetchArg);if(!oArg.async&&oRequest){var parser=new DOMParser();oDoc=parser.parseFromString(oRequest.responseText,"text/xml");Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;}
return null;}
if(typeof ActiveXObject!='undefined'){Zapatec.Transport.showBusy(oArg);try{var oDoc=new ActiveXObject(Zapatec.Transport.XMLDOM);oDoc.async=oArg.async;if(oArg.async){oDoc.onreadystatechange=function(){if(oDoc.readyState==4){Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);oDoc.onreadystatechange={};}};}
oDoc.load(oArg.url);if(!oArg.async){Zapatec.Transport.removeBusy(oArg);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;}
return null;}catch(oExpn){Zapatec.Transport.removeBusy(oArg);};}}
var oFetchArg={};for(var sKey in oArg){oFetchArg[sKey]=oArg[sKey];}
if(oArg.async){oFetchArg.onLoad=function(oRequest){Zapatec.Transport.parseXml({strXml:oRequest.responseText,onLoad:oArg.onLoad,onError:oArg.onError});};}else{oFetchArg.onLoad=null;}
var oRequest=Zapatec.Transport.fetch(oFetchArg);if(!oArg.async&&oRequest){return Zapatec.Transport.parseXml({strXml:oRequest.responseText,onLoad:oArg.onLoad,onError:oArg.onError});}
return null;};Zapatec.Transport.parseXml=function(oArg){if(oArg==null||typeof oArg!='object'){return null;}
if(!oArg.strXml){return null;}
if(!oArg.onLoad){oArg.onLoad=null;}
if(!oArg.onError){oArg.onError=null;}
if(window.DOMParser){try{var oDoc=(new DOMParser()).parseFromString(oArg.strXml,'text/xml');Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;}catch(oExpn){Zapatec.Transport.displayError(0,"Error: Can't parse.\n"+'String does not appear to be a valid XML fragment.',oArg.onError);};return null;}
if(typeof ActiveXObject!='undefined'){try{var oDoc=new ActiveXObject(Zapatec.Transport.XMLDOM);oDoc.loadXML(oArg.strXml);Zapatec.Transport.onXmlDocLoad(oDoc,oArg.onLoad,oArg.onError);return oDoc;}catch(oExpn){};}
return null;};Zapatec.Transport.onXmlDocLoad=function(oDoc,onLoad,onError){var sError=null;if(oDoc.parseError){sError=oDoc.parseError.reason;if(oDoc.parseError.srcText){sError+='Location: '+oDoc.parseError.url+'\nLine number '+oDoc.parseError.line+', column '+
oDoc.parseError.linepos+':\n'+
oDoc.parseError.srcText+'\n';}}else if(oDoc.documentElement&&oDoc.documentElement.tagName=='parsererror'){sError=oDoc.documentElement.firstChild.data+'\n'+
oDoc.documentElement.firstChild.nextSibling.firstChild.data;}else if(!oDoc.documentElement){sError='String does not appear to be a valid XML fragment.';}
if(sError){Zapatec.Transport.displayError(0,"Error: Can't parse.\n"+sError,onError);}else{if(typeof onLoad=='function'){onLoad(oDoc);}}};Zapatec.Transport.serializeXmlDoc=function(oDoc){if(window.XMLSerializer){return(new XMLSerializer).serializeToString(oDoc);}
if(oDoc.xml){return oDoc.xml;}};Zapatec.Transport.fetchJsonObj=function(oArg){if(oArg==null||typeof oArg!='object'){return null;}
if(!oArg.url){return null;}
if(typeof oArg.async=='undefined'){oArg.async=true;}
if(!oArg.reliable){oArg.reliable=false;}
var oFetchArg={};for(var sKey in oArg){oFetchArg[sKey]=oArg[sKey];}
if(oArg.async){oFetchArg.onLoad=function(oRequest){Zapatec.Transport.parseJson({strJson:oRequest.responseText,reliable:oArg.reliable,onLoad:oArg.onLoad,onError:oArg.onError});};}else{oFetchArg.onLoad=null;}
var oRequest=Zapatec.Transport.fetch(oFetchArg);if(!oArg.async&&oRequest){return Zapatec.Transport.parseJson({strJson:oRequest.responseText,reliable:oArg.reliable,onLoad:oArg.onLoad,onError:oArg.onError});}
return null;};Zapatec.Transport.parseJson=function(oArg){if(oArg==null||typeof oArg!='object'){return null;}
if(!oArg.reliable){oArg.reliable=false;}
if(!oArg.onLoad){oArg.onLoad=null;}
if(!oArg.onError){oArg.onError=null;}
var oJson=null;try{if(oArg.reliable){if(oArg.strJson){oJson=eval('('+oArg.strJson+')');}}else{oJson=Zapatec.Transport.parseJsonStr(oArg.strJson);}}catch(oExpn){var sError="Error: Can't parse.\nString doesn't appear to be a valid JSON fragment: ";sError+=oExpn.message;if(typeof oExpn.text!='undefined'&&oExpn.text.length){sError+='\n'+oExpn.text;}
sError+='\n'+oArg.strJson;Zapatec.Transport.displayError(0,sError,oArg.onError);return null;};if(typeof oArg.onLoad=='function'){oArg.onLoad(oJson);}
return oJson;};Zapatec.Transport.parseJsonStr=function(text){var p=/^\s*(([,:{}\[\]])|"(\\.|[^\x00-\x1f"\\])*"|-?\d+(\.\d*)?([eE][+-]?\d+)?|true|false|null)\s*/,token,operator;function error(m,t){throw{name:'JSONError',message:m,text:t||operator||token};}
function next(b){if(b&&b!=operator){error("Expected '"+b+"'");}
if(text){var t=p.exec(text);if(t){if(t[2]){token=null;operator=t[2];}else{operator=null;try{token=eval(t[1]);}catch(e){error("Bad token",t[1]);}}
text=text.substring(t[0].length);}else{error("Unrecognized token",text);}}else{token=operator=null;}}
function val(){var k,o;switch(operator){case'{':next('{');o={};if(operator!='}'){for(;;){if(operator||typeof token!='string'){error("Missing key");}
k=token;next();next(':');o[k]=val();if(operator!=','){break;}
next(',');}}
next('}');return o;case'[':next('[');o=[];if(operator!=']'){for(;;){o.push(val());if(operator!=','){break;}
next(',');}}
next(']');return o;default:if(operator!==null){error("Missing value");}
k=token;next();return k;}}
next();return val();};Zapatec.Transport.serializeJsonObj=function(v){var a=[];function e(s){a[a.length]=s;}
function g(x){var c,i,l,v;switch(typeof x){case'object':if(x){if(x instanceof Array){e('[');l=a.length;for(i=0;i<x.length;i+=1){v=x[i];if(typeof v!='undefined'&&typeof v!='function'){if(l<a.length){e(',');}
g(v);}}
e(']');return;}else if(typeof x.toString!='undefined'){e('{');l=a.length;for(i in x){v=x[i];if(x.hasOwnProperty(i)&&typeof v!='undefined'&&typeof v!='function'){if(l<a.length){e(',');}
g(i);e(':');g(v);}}
return e('}');}}
e('null');return;case'number':e(isFinite(x)?+x:'null');return;case'string':l=x.length;e('"');for(i=0;i<l;i+=1){c=x.charAt(i);if(c>=' '){if(c=='\\'||c=='"'){e('\\');}
e(c);}else{switch(c){case'\b':e('\\b');break;case'\f':e('\\f');break;case'\n':e('\\n');break;case'\r':e('\\r');break;case'\t':e('\\t');break;default:c=c.charCodeAt();e('\\u00'+Math.floor(c/16).toString(16)+
(c%16).toString(16));}}}
e('"');return;case'boolean':e(String(x));return;default:e('null');return;}}
g(v);return a.join('');};Zapatec.Transport.displayError=function(iErrCode,sError,onError){if(typeof onError=='function'){onError({errorCode:iErrCode,errorDescription:sError});}else{alert(sError);}};Zapatec.Transport.translateUrl=function(oArg){if(!oArg||!oArg.url){return null;}
var aFullUrl=oArg.url.split('?',2);var sUrl=aFullUrl[0];if(sUrl.indexOf(':')>=0){return oArg.url;}
var oLocation=document.location;var sPort=oLocation.port;if(sPort){sPort=':'+sPort;}
if(sUrl[0]=='/'){return[oLocation.protocol,'//',oLocation.hostname,sPort,sUrl].join('');}
var sLocation;if(sPort){sLocation=[oLocation.protocol,'//',oLocation.hostname,sPort,oLocation.pathname].join('');}else{sLocation=oLocation.toString();}
var sRelativeTo;if(typeof oArg.relativeTo!='string'){sRelativeTo=sLocation.split('?',2)[0];}else{sRelativeTo=oArg.relativeTo.split('?',2)[0];if(sRelativeTo.indexOf('/')<0){sRelativeTo=sLocation.split('?',2)[0];}else if(sRelativeTo.charAt(0)!='/'&&sRelativeTo.indexOf(':')<0){sRelativeTo=Zapatec.Transport.translateUrl({url:sRelativeTo});}}
sRelativeTo=sRelativeTo.split('#')[0];var aUrl=sUrl.split('/');var aRelativeTo=sRelativeTo.split('/');aRelativeTo.pop();for(var iToken=0;iToken<aUrl.length;iToken++){var sToken=aUrl[iToken];if(sToken=='..'){aRelativeTo.pop();}else if(sToken!='.'){aRelativeTo.push(sToken);}}
aFullUrl[0]=aRelativeTo.join('/');return aFullUrl.join('?');};Zapatec.Transport.loading={};Zapatec.Transport.setupEvents=function(oArg){if(!oArg){return{};}
if(oArg.force||!Zapatec.EventDriven||!oArg.url){return{onLoad:oArg.onLoad,onError:oArg.onError};}
var sUrl=oArg.url;if(typeof oArg.onLoad=='function'){Zapatec.EventDriven.addEventListener('zpTransportOnLoad'+sUrl,oArg.onLoad);}
if(typeof oArg.onError=='function'){Zapatec.EventDriven.addEventListener('zpTransportOnError'+sUrl,oArg.onError);}
if(Zapatec.Transport.loading[sUrl]){return{loading:true};}else{Zapatec.Transport.loading[sUrl]=true;return{onLoad:new Function("Zapatec.EventDriven.fireEvent('zpTransportOnLoad"+
sUrl+"');Zapatec.EventDriven.removeEvent('zpTransportOnLoad"+
sUrl+"');Zapatec.EventDriven.removeEvent('zpTransportOnError"+
sUrl+"');Zapatec.Transport.loading['"+sUrl+"'] = false;"),onError:new Function('oError',"Zapatec.EventDriven.fireEvent('zpTransportOnError"+
sUrl+"',oError);Zapatec.EventDriven.removeEvent('zpTransportOnLoad"+
sUrl+"');Zapatec.EventDriven.removeEvent('zpTransportOnError"+
sUrl+"');Zapatec.Transport.loading['"+sUrl+"'] = false;")};}};Zapatec.Transport.loadedJS={};Zapatec.Transport.isLoadedJS=function(sUrl,sAbsUrl){if(typeof sAbsUrl=='undefined'){sAbsUrl=Zapatec.Transport.translateUrl({url:sUrl});}
if(Zapatec.Transport.loadedJS[sAbsUrl]){return true;}
var aScripts=document.getElementsByTagName('script');for(var iScript=0;iScript<aScripts.length;iScript++){var sSrc=aScripts[iScript].getAttribute('src')||'';if(sSrc==sUrl){Zapatec.Transport.loadedJS[sAbsUrl]=true;return true;}}
return false;};Zapatec.Transport.getPath=function(sScriptFileName){var aScripts=document.getElementsByTagName('script');for(var iScript=aScripts.length-1;iScript>=0;iScript--){var sSrc=aScripts[iScript].getAttribute('src')||'';var aTokens=sSrc.split('/');var sLastToken=aTokens.pop();if(sLastToken==sScriptFileName){return aTokens.length?aTokens.join('/')+'/':'';}}
for(var sSrc in Zapatec.Transport.loadedJS){var aTokens=sSrc.split('/');var sLastToken=aTokens.pop();if(sLastToken==sScriptFileName){return aTokens.length?aTokens.join('/')+'/':'';}}
return'';};Zapatec.Transport.include=function(sSrc,sId,bForce){if(Zapatec.doNotInclude){return;}
var sAbsUrl=Zapatec.Transport.translateUrl({url:sSrc});if(!bForce&&Zapatec.Transport.isLoadedJS(sSrc,sAbsUrl)){return;}
document.write('<script type="text/javascript" src="'+sSrc+
(typeof sId=='string'?'" id="'+sId:'')+'"></script>');Zapatec.Transport.loadedJS[sAbsUrl]=true;};Zapatec.include=Zapatec.Transport.include;Zapatec.Transport.includeJS=function(sSrc,sId){setTimeout(function(){var oContr=document.body;if(!oContr){oContr=document.getElementsByTagName('head')[0];if(!oContr){oContr=document;}}
var oScript=document.createElement('script');oScript.type='text/javascript';oScript.src=sSrc;if(typeof sId=='string'){oScript.id=sId;}
oContr.appendChild(oScript);},0);};Zapatec.Transport.loadJS=function(oArg){if(!(oArg instanceof Object)){return;}
if(typeof oArg.async=='undefined'){oArg.async=true;}
var sUrl=null;if(oArg.url){sUrl=oArg.url;}else if(oArg.module){var sPath='';if(typeof oArg.path!='undefined'){sPath=oArg.path;}else if(typeof Zapatec.zapatecPath!='undefined'){sPath=Zapatec.zapatecPath;}
sUrl=sPath+oArg.module+'.js';}else{return;}
var sAbsUrl=Zapatec.Transport.translateUrl({url:sUrl});if(!oArg.onLoad){oArg.onLoad=null;}
if(!oArg.onError){oArg.onError=null;}
if(Zapatec.doNotInclude||(!oArg.force&&Zapatec.Transport.isLoadedJS(sUrl,sAbsUrl))){if(typeof oArg.onLoad=='function'){oArg.onLoad();}
return;}
var oHandlers=Zapatec.Transport.setupEvents({url:sAbsUrl,force:oArg.force,onLoad:oArg.onLoad,onError:oArg.onError});if(oHandlers.loading){return;}
Zapatec.Transport.fetch({url:sUrl,async:oArg.async,onLoad:function(oRequest){if(oArg.force||!Zapatec.Transport.loadedJS[sAbsUrl]){var aTokens=sUrl.split('/');var sLastToken=aTokens.pop();Zapatec.lastLoadedModule=aTokens.join('/')+'/';Zapatec.Transport.evalGlobalScope(oRequest.responseText);Zapatec.lastLoadedModule=null;Zapatec.Transport.loadedJS[sAbsUrl]=true;}
if(typeof oHandlers.onLoad=='function'){oHandlers.onLoad();}},onError:oHandlers.onError});};Zapatec.Transport.includeCSS=function(sHref){var oContr=document.getElementsByTagName('head')[0];if(!oContr){return;}
var oLink=document.createElement('link');oLink.setAttribute('rel','stylesheet');oLink.setAttribute('type','text/css');oLink.setAttribute('href',sHref);oContr.appendChild(oLink);};Zapatec.Transport.loadedCss={};Zapatec.Transport.loadCss=function(oArg){if(!(oArg instanceof Object)){return;}
if(!oArg.url){return;}
if(typeof oArg.async=='undefined'){oArg.async=true;}
var sAbsUrl=Zapatec.Transport.translateUrl({url:oArg.url});if(!oArg.force){if(Zapatec.Transport.loadedCss[sAbsUrl]){if(typeof oArg.onLoad=='function'){oArg.onLoad();}
return;}
var aLinks=document.getElementsByTagName('link');for(var iLnk=0;iLnk<aLinks.length;iLnk++){var sHref=aLinks[iLnk].getAttribute('href')||'';sHref=Zapatec.Transport.translateUrl({url:sHref});if(sHref==sAbsUrl){Zapatec.Transport.loadedCss[sAbsUrl]=true;if(typeof oArg.onLoad=='function'){oArg.onLoad();}
return;}}}
var oHandlers=Zapatec.Transport.setupEvents({url:sAbsUrl,force:oArg.force,onLoad:oArg.onLoad,onError:oArg.onError});if(oHandlers.loading){return;}
Zapatec.Transport.fetch({url:oArg.url,async:oArg.async,onLoad:function(oRequest){var sCss=oRequest.responseText;var aResultCss=[];var aImgUrls=[];var aCssUrls=[];var iPos=0;var iNextPos=sCss.indexOf('url(',iPos);while(iNextPos>=0){iNextPos+=4;var sToken=sCss.substring(iPos,iNextPos);var bIsImport=/@import\s+url\($/.test(sToken);aResultCss.push(sToken);iPos=iNextPos;iNextPos=sCss.indexOf(')',iPos);if(iNextPos>=0){var sImgUrl=sCss.substring(iPos,iNextPos);sImgUrl=sImgUrl.replace(/['"]/g,'');sImgUrl=Zapatec.Transport.translateUrl({url:sImgUrl,relativeTo:oArg.url});sImgUrl=Zapatec.Transport.translateUrl({url:sImgUrl});aResultCss.push(sImgUrl);if(bIsImport){aCssUrls.push(sImgUrl);}else{aImgUrls.push(sImgUrl);}
iPos=iNextPos;iNextPos=sCss.indexOf('url(',iPos);}}
aResultCss.push(sCss.substr(iPos));sCss=aResultCss.join('');Zapatec.Transport.loadCssList({urls:aCssUrls,async:oArg.async,onLoad:function(){(new Zapatec.StyleSheet()).addParse(sCss);if(typeof oHandlers.onLoad=='function'){oHandlers.onLoad();}}});Zapatec.Transport.loadedCss[sAbsUrl]=true;Zapatec.Transport.preloadImages({urls:aImgUrls,timeout:60000});},onError:oHandlers.onError});};Zapatec.Transport.loadCssList=function(oArg){if(!(oArg instanceof Object)){return;}
if(typeof oArg.async=='undefined'){oArg.async=true;}
if(!oArg.onLoad){oArg.onLoad=null;}
if(!oArg.onError){oArg.onError=null;}
if(!oArg.urls||!oArg.urls.length){if(typeof oArg.onLoad=='function'){oArg.onLoad();}
return;}
var sUrl=oArg.urls.shift();var funcOnLoad=function(){Zapatec.Transport.loadCssList({urls:oArg.urls,async:oArg.async,force:oArg.force,onLoad:oArg.onLoad,onError:oArg.onError});};Zapatec.Transport.loadCss({url:sUrl,async:oArg.async,force:oArg.force,onLoad:funcOnLoad,onError:function(oError){Zapatec.Transport.displayError(oError.errorCode,oError.errorDescription,oArg.onError);funcOnLoad();}});};Zapatec.Transport.imagePreloads=[];Zapatec.Transport.preloadImages=function(oArg){Zapatec.Transport.imagePreloads.push(new Zapatec.PreloadImages(oArg));};Zapatec.Drag={};Zapatec.Utils.emulateWindowEvent(['mousedown','mousemove','mouseup']);Zapatec.Drag.currentId=null;Zapatec.Drag.start=function(oEv,sId,oArg){var oDrag=Zapatec.Drag;var oUtils=Zapatec.Utils;if(oDrag.currentId){return true;}
var oEl=Zapatec.Widget.getElementById(sId);if(!oEl||oEl.zpDrag){return true;}
if(!oArg){oArg={};}
var oPos=oUtils.getMousePos(oEv||window.event);Zapatec.EventDriven.fireEvent('dragStart',{el:oEl,event:oEv});oEl.zpDrag=true;if(oArg.resize){oEl.zpDragResize=true;}
oEl.zpDragPageX=oPos.pageX;oEl.zpDragPageY=oPos.pageY;oEl.zpDragWidth=oEl.clientWidth;oEl.zpDragHeight=oEl.clientHeight;var sTag;var oOffsetParent=oEl.offsetParent;if(oOffsetParent){sTag=oOffsetParent.tagName.toLowerCase();}
if(sTag&&sTag!='body'&&sTag!='html'){oPos=oUtils.getElementOffset(oEl);var oPosParent=oUtils.getElementOffset(oOffsetParent);oEl.zpDragLeft=oPos.left-oPosParent.left;oEl.zpDragTop=oPos.top-oPosParent.top;}else{oEl.zpDragLeft=oEl.offsetLeft;oEl.zpDragTop=oEl.offsetTop;}
oEl.zpDragRight=oEl.zpDragLeft+oEl.zpDragWidth;oEl.zpDragBottom=oEl.zpDragTop+oEl.zpDragHeight;oEl.zpDragPrevLeft=oEl.zpDragPrevRealLeft=oEl.zpDragLeft;oEl.zpDragPrevTop=oEl.zpDragPrevRealTop=oEl.zpDragTop;oEl.zpDragV=oArg.vertical;oEl.zpDragH=oArg.horizontal;oEl.zpDragLimTop=typeof oArg.limitTop=='number'?oArg.limitTop:-Infinity;oEl.zpDragLimBot=typeof oArg.limitBottom=='number'?oArg.limitBottom:Infinity;oEl.zpDragLimLft=typeof oArg.limitLeft=='number'?oArg.limitLeft:-Infinity;oEl.zpDragLimRgh=typeof oArg.limitRight=='number'?oArg.limitRight:Infinity;if(typeof oArg.step=='number'){oEl.zpDragStepV=oEl.zpDragStepH=oArg.step;}
if(typeof oArg.stepVertical=='number'){oEl.zpDragStepV=oArg.stepVertical;}
if(typeof oArg.stepHorizontal=='number'){oEl.zpDragStepH=oArg.stepHorizontal;}
oDrag.currentId=sId;oUtils.addEvent(document,'mousemove',oDrag.move);oUtils.addEvent(document,'mouseup',oDrag.end);return true;};Zapatec.Drag.move=function(oEv){var oDrag=Zapatec.Drag;var oUtils=Zapatec.Utils;oEv||(oEv=window.event);if(!oDrag.currentId){return oUtils.stopEvent(oEv);}
var oEl=document.getElementById(oDrag.currentId);if(!(oEl&&oEl.zpDrag)){return oUtils.stopEvent(oEv);}
var oSt=oEl.style;var oPos=oUtils.getMousePos(oEv);var oParam={el:oEl,startLeft:oEl.zpDragLeft,startTop:oEl.zpDragTop,prevLeft:oEl.zpDragPrevLeft,prevTop:oEl.zpDragPrevTop,left:oEl.zpDragLeft,top:oEl.zpDragTop,realLeft:oEl.zpDragLeft,realTop:oEl.zpDragTop,event:oEv};var iOffset,iPos,iStep,iSize;iOffset=oPos.pageX-oEl.zpDragPageX;iStep=oEl.zpDragStepH;if(iStep){iPos=oEl.zpDragLeft+Math.floor(iOffset/iStep)*iStep;oParam.realLeft=oEl.zpDragPrevRealLeft=oEl.zpDragLeft+iOffset;}else{oParam.realLeft=oEl.zpDragPrevRealLeft=iPos=oEl.zpDragLeft+iOffset;}
if(!oEl.zpDragV){if(oEl.zpDragLimLft<=iPos&&oEl.zpDragLimRgh>=iPos){if(oSt.right){oSt.right='';}
if(oEl.zpDragResize){if(iOffset>0){iSize=oEl.zpDragWidth+iOffset;if(iStep){iSize=Math.floor(iSize/iStep)*iStep;}
oSt.left=oEl.zpDragLeft+'px';}else{iSize=oEl.zpDragWidth-iOffset;if(iStep){iSize=Math.ceil(iSize/iStep)*iStep;}
oSt.left=oEl.zpDragLeft-iSize+'px';}
oSt.width=iSize+'px';}else{oSt.left=iPos+'px';}
oParam.left=iPos;oEl.zpDragPrevLeft=iPos;}else{oParam.left=oParam.prevLeft;}}
iOffset=oPos.pageY-oEl.zpDragPageY;iStep=oEl.zpDragStepV;if(iStep){iPos=oEl.zpDragTop+Math.floor(iOffset/iStep)*iStep;oParam.realTop=oEl.zpDragPrevRealTop=oEl.zpDragTop+iOffset;}else{iPos=oParam.realTop=oEl.zpDragPrevRealTop=oEl.zpDragTop+iOffset;}
if(!oEl.zpDragH){if(oEl.zpDragLimTop<=iPos&&oEl.zpDragLimBot>=iPos){if(oSt.bottom){oSt.bottom='';}
if(oEl.zpDragResize){if(iOffset>0){iSize=oEl.zpDragHeight+iOffset;if(iStep){iSize=Math.floor(iSize/iStep)*iStep;}
oSt.top=oEl.zpDragTop+'px';}else{iSize=oEl.zpDragHeight-iOffset;if(iStep){iSize=Math.ceil(iSize/iStep)*iStep;}
oSt.top=oEl.zpDragBottom-iSize+'px';}
oSt.height=iSize+'px';}else{oSt.top=iPos+'px';}
oParam.top=iPos;oEl.zpDragPrevTop=iPos;}else{oParam.top=oParam.prevTop;}}
Zapatec.EventDriven.fireEvent('dragMove',oParam);return oUtils.stopEvent(oEv);};Zapatec.Drag.end=function(oEv){var oDrag=Zapatec.Drag;var oUtils=Zapatec.Utils;oEv||(oEv=window.event);if(!oDrag.currentId){return oUtils.stopEvent(oEv);}
var oEl=document.getElementById(oDrag.currentId);if(!(oEl&&oEl.zpDrag)){return oUtils.stopEvent(oEv);}
oUtils.removeEvent(document,'mousemove',oDrag.move);oUtils.removeEvent(document,'mouseup',oDrag.end);var oParam={el:oEl,startLeft:oEl.zpDragLeft,startTop:oEl.zpDragTop,left:oEl.zpDragPrevLeft,top:oEl.zpDragPrevTop,realLeft:oEl.zpDragPrevRealLeft,realTop:oEl.zpDragPrevRealTop,event:oEv};oDrag.currentId=null;oEl.zpDrag=null;oEl.zpDragPageY=null;oEl.zpDragPageX=null;oEl.zpDragTop=null;oEl.zpDragLeft=null;oEl.zpDragPrevTop=null;oEl.zpDragPrevLeft=null;oEl.zpDragPrevRealTop=null;oEl.zpDragPrevRealLeft=null;oEl.zpDragV=null;oEl.zpDragH=null;oEl.zpDragLimTop=null;oEl.zpDragLimBot=null;oEl.zpDragLimLft=null;oEl.zpDragLimRgh=null;oEl.zpDragStepV=null;oEl.zpDragStepH=null;Zapatec.EventDriven.fireEvent('dragEnd',oParam);return oUtils.stopEvent(oEv);};if(typeof Zapatec=='undefined'){Zapatec=function(){};}
Zapatec.Widget=function(oArg){this.config={};Zapatec.Widget.SUPERconstructor.call(this);this.init(oArg);};Zapatec.inherit(Zapatec.Widget,Zapatec.EventDriven);Zapatec.Widget.path=Zapatec.getPath('Zapatec.Widget');Zapatec.Widget.prototype.init=function(oArg){Zapatec.Widget.SUPERclass.init.call(this);if(typeof this.id=='undefined'){var iId=0;while(Zapatec.Widget.all[iId]){iId++;}
this.id=iId;Zapatec.Widget.all[iId]=this;}
this.configure(oArg);this.addUserEventListeners();this.addStandardEventListeners();this.initLang();this.loadTheme();};Zapatec.Widget.prototype.reconfigure=function(oArg){this.configure(oArg);this.loadTheme();if(oArg.lang||oArg.langCountryCode||oArg.langEncoding){this.langStr=this.config.lang;if(this.config.langCountryCode&&this.config.langCountryCode.length>0){this.langStr+="_"+this.config.langCountryCode;}
if(this.config.langEncoding&&this.config.langEncoding.length>0){this.langStr+="-"+this.config.langEncoding;}}
if(this.config.lang&&this.config.lang.length>0&&!(Zapatec.Langs[this.config.langId]&&Zapatec.Langs[this.config.langId][this.langStr])){Zapatec.Log({description:this.config.lang+(this.config.langCountryCode?" and country code "+this.config.langCountryCode:"")+(this.config.langEncoding?" and encoding "+this.config.langEncoding:"")});this.config.lang=null;this.config.langEncoding=null;this.langStr=null;}};Zapatec.Widget.prototype.configure=function(oArg){this.defineConfigOption('theme','default');var sPath=this.constructor.path;if(typeof sPath!='undefined'){this.defineConfigOption('themePath',sPath+'../themes/');}else{this.defineConfigOption('themePath','../themes/');}
this.defineConfigOption('asyncTheme',false);this.defineConfigOption('source');this.defineConfigOption('sourceType');this.defineConfigOption('callbackSource');this.defineConfigOption('asyncSource',true);this.defineConfigOption('reliableSource',true);this.defineConfigOption('callbackConvertSource');this.defineConfigOption('eventListeners',{});this.defineConfigOption('langId');this.defineConfigOption('lang');this.defineConfigOption('langCountryCode');this.defineConfigOption('langEncoding');if(oArg){var oConfig=this.config;for(var sOption in oArg){if(typeof oConfig[sOption]!='undefined'){oConfig[sOption]=oArg[sOption];}else{Zapatec.Log({description:"Unknown config option: "+sOption});}}}};Zapatec.Widget.prototype.getConfiguration=function(){return this.config;};Zapatec.Widget.all=[];Zapatec.Widget.getWidgetById=function(iId){return Zapatec.Widget.all[iId];};Zapatec.Widget.prototype.addCircularRef=function(oElement,sProperty){if(!this.widgetCircularRefs){this.widgetCircularRefs=[];}
this.widgetCircularRefs.push([oElement,sProperty]);};Zapatec.Widget.prototype.createProperty=function(oElement,sProperty,val){oElement[sProperty]=val;this.addCircularRef(oElement,sProperty);};Zapatec.Widget.prototype.removeCircularRefs=function(){if(!this.widgetCircularRefs){return;}
for(var iRef=this.widgetCircularRefs.length-1;iRef>=0;iRef--){var oRef=this.widgetCircularRefs[iRef];oRef[0][oRef[1]]=null;oRef[0]=null;}};Zapatec.Widget.prototype.discard=function(){Zapatec.Widget.all[this.id]=null;this.removeCircularRefs();};Zapatec.Widget.removeCircularRefs=function(){for(var iWidget=Zapatec.Widget.all.length-1;iWidget>=0;iWidget--){var oWidget=Zapatec.Widget.all[iWidget];if(oWidget&&oWidget.removeCircularRefs){oWidget.removeCircularRefs();}}};Zapatec.Utils.addEvent(window,'unload',Zapatec.Widget.removeCircularRefs);Zapatec.Widget.prototype.defineConfigOption=function(sOption,val){if(typeof this.config[sOption]=='undefined'){if(typeof val=='undefined'){this.config[sOption]=null;}else{this.config[sOption]=val;}}};Zapatec.Widget.prototype.addUserEventListeners=function(){var oListeners=this.config.eventListeners;var fListener,iListeners,iListener;for(var sEvent in oListeners){if(oListeners.hasOwnProperty(sEvent)){vListener=oListeners[sEvent];if(vListener instanceof Array){iListeners=vListener.length;for(iListener=0;iListener<iListeners;iListener++){this.addEventListener(sEvent,vListener[iListener]);}}else{this.addEventListener(sEvent,vListener);}}}};Zapatec.Widget.prototype.addStandardEventListeners=function(){this.addEventListener('loadThemeError',Zapatec.Widget.loadThemeError);};Zapatec.Widget.loadThemeError=function(oError){var sDescription="Can't load theme.";if(oError&&oError.errorDescription){sDescription+=' '+oError.errorDescription;}
Zapatec.Log({description:sDescription});};Zapatec.Widget.prototype.loadTheme=function(){var oConfig=this.config;if(typeof oConfig.theme=='string'&&oConfig.theme.length){var iPos=oConfig.theme.lastIndexOf('/');if(iPos>=0){iPos++;oConfig.themePath=oConfig.theme.substring(0,iPos);oConfig.theme=oConfig.theme.substring(iPos);}
iPos=oConfig.theme.lastIndexOf('.');if(iPos>=0){oConfig.theme=oConfig.theme.substring(0,iPos);}
oConfig.theme=oConfig.theme.toLowerCase();if(oConfig.theme=='auto'){var sUserAgent=navigator.userAgent;if(sUserAgent.indexOf('Windows NT 6')!=-1){oConfig.theme='winvista';}else if(sUserAgent.indexOf('Windows NT 5')!=-1){oConfig.theme='winxp';}else if(sUserAgent.indexOf('Win')!=-1){oConfig.theme='win2k';}else if(sUserAgent.indexOf('Mac')!=-1){oConfig.theme='macosx';}else{oConfig.theme='default';}}}else{oConfig.theme='';}
if(oConfig.theme){this.fireEvent('loadThemeStart');this.themeLoaded=false;var oWidget=this;var sUrl=oConfig.themePath+oConfig.theme+'.css';Zapatec.Transport.loadCss({url:sUrl,async:oConfig.asyncTheme,onLoad:function(){oWidget.fireEvent('loadThemeEnd');oWidget.themeLoaded=true;},onError:function(oError){oWidget.fireEvent('loadThemeEnd');oWidget.fireEvent('loadThemeError',oError);oWidget.themeLoaded=true;}});}}
Zapatec.Widget.prototype.getClassName=function(oArg){var aClassName=[];if(oArg&&oArg.prefix){aClassName.push(oArg.prefix);}
var sTheme=this.config.theme;if(sTheme!=''){aClassName.push(sTheme.charAt(0).toUpperCase());aClassName.push(sTheme.substr(1));}
if(oArg&&oArg.suffix){aClassName.push(oArg.suffix);}
return aClassName.join('');};Zapatec.Widget.prototype.formElementId=function(oArg){var aId=[];if(oArg&&oArg.prefix){aId.push(oArg.prefix);}else{aId.push('zpWidget');}
aId.push(this.id);if(oArg&&oArg.suffix){aId.push(oArg.suffix);}else{aId.push('-');}
if(typeof this.widgetUniqueIdCounter=='undefined'){this.widgetUniqueIdCounter=0;}else{this.widgetUniqueIdCounter++;}
aId.push(this.widgetUniqueIdCounter);return aId.join('');};Zapatec.Widget.prototype.showContainer=function(effects,animSpeed,onFinish){return this.showHideContainer(effects,animSpeed,onFinish,true);}
Zapatec.Widget.prototype.hideContainer=function(effects,animSpeed,onFinish){return this.showHideContainer(effects,animSpeed,onFinish,false);}
Zapatec.Widget.prototype.showHideContainer=function(effects,animSpeed,onFinish,show){if(this.container==null){return null;}
if(effects&&effects.length>0&&typeof(Zapatec.Effects)=='undefined'){var self=this;Zapatec.Transport.loadJS({url:Zapatec.zapatecPath+'../zpeffects/src/effects.js',onLoad:function(){self.showHideContainer(effects,animSpeed,onFinish,show);}});return false;}
if(animSpeed==null&&isNaN(parseInt(animSpeed))){animSpeed=5;}
if(!effects||effects.length==0){if(show){this.container.style.display=this.originalContainerDisplay;this.originalContainerDisplay=null;}else{this.originalContainerDisplay=this.container.style.display;this.container.style.display='none';}
if(onFinish){onFinish();}}else{if(show){Zapatec.Effects.show(this.container,animSpeed,effects,onFinish);}else{Zapatec.Effects.hide(this.container,animSpeed,effects,onFinish);}}
return true;}
Zapatec.Widget.prototype.loadData=function(oArg){var oConfig=this.config;if(typeof oConfig.callbackSource=='function'){var oSource=oConfig.callbackSource(oArg);if(oSource){if(typeof oSource.source!='undefined'){oConfig.source=oSource.source;}
if(typeof oSource.sourceType!='undefined'){oConfig.sourceType=oSource.sourceType;}}}
var vSource=oConfig.source;if(typeof oConfig.callbackConvertSource=='function'){vSource=oConfig.callbackConvertSource(vSource);}
var sSourceType=oConfig.sourceType;if(vSource!=null&&sSourceType!=null){sSourceType=sSourceType.toLowerCase();if(sSourceType=='html'){this.fireEvent('loadDataStart');this.loadDataHtml(Zapatec.Widget.getElementById(vSource));this.fireEvent('loadDataEnd');}else if(sSourceType=='html/text'){this.fireEvent('loadDataStart');this.loadDataHtmlText(vSource);this.fireEvent('loadDataEnd');}else if(sSourceType=='html/url'){this.fireEvent('fetchSourceStart');var oWidget=this;Zapatec.Transport.fetch({url:vSource,async:oConfig.asyncSource,onLoad:function(oRequest){oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataStart');oWidget.loadDataHtmlText(oRequest.responseText);oWidget.fireEvent('loadDataEnd');},onError:function(oError){oWidget.fireEvent('fetchSourceError',oError);oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataEnd');}});}else if(sSourceType=='json'){this.fireEvent('loadDataStart');if(typeof vSource=='object'){this.loadDataJson(vSource);}else if(oConfig.reliableSource){this.loadDataJson(eval(['(',vSource,')'].join('')));}else{this.loadDataJson(Zapatec.Transport.parseJson({strJson:vSource}));}
this.fireEvent('loadDataEnd');}else if(sSourceType=='json/url'){this.fireEvent('fetchSourceStart');var oWidget=this;Zapatec.Transport.fetchJsonObj({url:vSource,async:oConfig.asyncSource,reliable:oConfig.reliableSource,onLoad:function(oResult){oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataStart');oWidget.loadDataJson(oResult);oWidget.fireEvent('loadDataEnd');},onError:function(oError){oWidget.fireEvent('fetchSourceError',oError);oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataEnd');}});}else if(sSourceType=='xml'){this.fireEvent('loadDataStart');if(typeof vSource=='object'){this.loadDataXml(vSource);}else{this.loadDataXml(Zapatec.Transport.parseXml({strXml:vSource}));}
this.fireEvent('loadDataEnd');}else if(sSourceType=='xml/url'){this.fireEvent('fetchSourceStart');var oWidget=this;Zapatec.Transport.fetchXmlDoc({url:vSource,async:oConfig.asyncSource,onLoad:function(oResult){oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataStart');oWidget.loadDataXml(oResult);oWidget.fireEvent('loadDataEnd');},onError:function(oError){oWidget.fireEvent('fetchSourceError',oError);oWidget.fireEvent('fetchSourceEnd');oWidget.fireEvent('loadDataEnd');}});}}else{this.fireEvent('loadDataStart');this.loadDataHtml(Zapatec.Widget.getElementById(vSource));this.fireEvent('loadDataEnd');}};Zapatec.Widget.prototype.loadDataHtml=function(oSource){};Zapatec.Widget.prototype.loadDataHtmlText=function(sSource){var oTempContainer=Zapatec.Transport.parseHtml(sSource);this.loadDataHtml(oTempContainer.firstChild);};Zapatec.Widget.prototype.loadDataJson=function(oSource){};Zapatec.Widget.prototype.loadDataXml=function(oSource){};Zapatec.Widget.prototype.receiveData=function(oArg){if(!oArg){oArg={};}
this.dataSender=oArg.widget;this.fireEvent('receiveData',oArg);};Zapatec.Widget.prototype.replyData=function(){return null;};Zapatec.Widget.prototype.replyDataCancel=function(){this.fireEvent('replyDataCancel');if(typeof this.hide=='function'){this.hide();}
this.dataSender=null;};Zapatec.Widget.prototype.replyDataReturn=function(oArg){if(!oArg){oArg={};}
this.fireEvent('replyDataReturn',oArg);var oWidget=oArg.widget;if(!oWidget){oWidget=this.dataSender;}
if(!oWidget||typeof oWidget.acceptData!='function'){return;}
oWidget.acceptData({widget:this,data:this.replyData()});this.replyDataCancel();};Zapatec.Widget.prototype.acceptData=function(oArg){this.fireEvent('acceptData',oArg);};Zapatec.Widget.prototype.initLang=function(){this.langStr=this.config.lang;if(this.config.langCountryCode&&this.config.langCountryCode.length>0){this.langStr+="_"+this.config.langCountryCode;}
if(this.config.langEncoding&&this.config.langEncoding.length>0){this.langStr+="-"+this.config.langEncoding;}
if(this.config.lang&&this.config.lang.length>0&&!(Zapatec.Langs[this.config.langId]&&Zapatec.Langs[this.config.langId][this.langStr])){Zapatec.Log({description:"No language data found for language "+
this.config.lang+(this.config.langCountryCode?" and country code "+this.config.langCountryCode:"")+(this.config.langEncoding?" and encoding "+this.config.langEncoding:"")});this.config.lang=null;this.config.langCountryCode=null;this.config.langEncoding=null;this.langStr=null;}};Zapatec.Widget.prototype.getMessage=function(key){if(arguments.length==0){return null;}
if(!Zapatec.Langs[this.config.langId]||!Zapatec.Langs[this.config.langId][this.langStr]||!Zapatec.Langs[this.config.langId][this.langStr][key]){return key;}
var res=Zapatec.Langs[this.config.langId][this.langStr][key];if(arguments.length>1&&typeof(res)=="string"){for(var ii=1;ii<arguments.length;ii++){var re=new RegExp("(^|([^\\\\]))\%"+ii);res=res.replace(re,"$2"+arguments[ii]);}}
return res;};Zapatec.Widget.callMethod=function(iWidgetId,sMethod){var oWidget=Zapatec.Widget.getWidgetById(iWidgetId);if(oWidget&&typeof oWidget[sMethod]=='function'){var aArgs=[].slice.call(arguments,2);return oWidget[sMethod].apply(oWidget,aArgs);}};Zapatec.Widget.getElementById=function(element){if(typeof element=='string'){return document.getElementById(element);}
return element;};Zapatec.Widget.getStyle=function(element){var style=element.getAttribute('style')||'';if(typeof style=='string'){return style;}
return style.cssText;
};


/*
 *
 * Copyright (c) 2004-2005 by Zapatec, Inc.
 * http://www.zapatec.com
 * 1700 MLK Way, Berkeley, California,
 * 94709, U.S.A.
 * All rights reserved.
 *
 *
 */
Zapatec.formPath = Zapatec.getPath("Zapatec.Form");

Zapatec.Utils.createNestedHash(Zapatec,["Langs","Zapatec.Form","eng"],{'initializeError':'Form already initialized!','loadingForm':'loading form','noFormError':"Couldn't find form",'submitOneError':'There is 1 error.','submitManyErrors':'There are %1 errors.','isRequiredError':'This field is required','maskNotFilledError':'Does not conform to mask %1','noSuchAutoCompleteValueError':'No such value','invalidURLError':'Invalid URL','invalidEmailError':'Invalid email address','invalidCreditCardError':'Invalid credit card number','invalidUSPhoneError':'Invalid US phone number','invalidInternationalPhoneError':'Invalid international phone number','invalidUSZipError':'Invalid US zip code','invalidDateError':'Invalid date','invalidIntError':'Not an integer','invalidFloatError':'Not a float','maxLengthError':'Please enter less then %1 symbols','minLengthError':'Please enter more then %1 symbols','ajaxDebugSeparator':'-----------------------','ajaxDebugSubmitTitle':'Sending request for AJAX submit form.','ajaxDebugValidateTitle':'Sending request for AJAX validate field %1.','ajaxDebugFillTitle':'Sending request for AJAX fill for field %1.','ajaxDebugQuery':'Query: %1','ajaxDebugResponse':'Response received: %1','ajaxDebugResponseError':'Error response received: %1','ajaxSubmitCantParseError':"Can't parse received JSON: %1",'ajaxSubmitNoResponseError':'No response','ajaxValidateCantParseError':"Can't parse received JSON: %1",'ajaxValidateNoResponseError':'No response','ajaxValidateValidationError':'This field is not valid','ajaxFillCantParseError':"Can't parse received JSON: %1",'ajaxFillNoResponseError':'No response','ajaxFillGeneralError':"Can't retrieve fill values",'ajaxSuggestCantParseError':"Can't parse received JSON: %1",'ajaxSuggestNoResponseError':'No response','ajaxSuggestGeneralError':"Can't retrieve value"});Zapatec.Form=function(){var objArgs={};switch(arguments.length){case 1:objArgs=arguments[0];break;case 2:objArgs=arguments[1];objArgs.form=arguments[0];break;}
Zapatec.Form.SUPERconstructor.call(this,objArgs);};Zapatec.Form.id="Zapatec.Form";Zapatec.inherit(Zapatec.Form,Zapatec.Widget);Zapatec.Form.prototype.init=function(objArgs){this.container=null;Zapatec.Form.SUPERclass.init.call(this,objArgs);if(this.config.form.zpForm!=null){Zapatec.Log({description:this.getMessage('initializeError')});return null;}
this.container=this.config.form;this.createProperty(this.container,"zpForm",this);this.addCircularRef("container");this.container.className=this.container.className.replace(/\bzpForm.*?\b/,"")+" "+this.getClassName({prefix:"zpForm"});var self=this;var oldOnSubmit=this.container.onsubmit||function(){return true;};if(typeof(this.config.asyncSubmitFunc)=='function'){if(this.config.serverCallback){var targetName="form-iframe-"+this.id;var tmp=document.createElement("span");tmp.innerHTML='<iframe name="'+targetName+'" style="display: none"></iframe>';var iframe=tmp.firstChild;this.container.parentNode.insertBefore(iframe,this.container);this.container.setAttribute("target",targetName);var hidden=document.createElement("input");hidden.setAttribute("type","hidden");hidden.setAttribute("name",this.config.serverCallback);hidden.setAttribute("value","window.parent.Zapatec.Widget.getWidgetById("+this.id+").processAsyncResponse");this.container.appendChild(hidden);}
this.container.onsubmit=function(ev){var retVal=oldOnSubmit(ev);return self.asyncSubmit(ev)&&retVal;};}else{this.container.onsubmit=function(ev){return self.submit(ev)&&oldOnSubmit(ev);};}
this.addCircularRef(this.container,"onsubmit");this.container.onreset=function(ev){setTimeout(function(ev){self.reset(ev);},1);};this.addCircularRef(this.container,"onreset");var focusedFlag=false;var els=[];for(var ii=0;ii<this.container.elements.length;ii++){els.push(this.container.elements[ii]);}
for(var ii=0;ii<els.length;ii++){var el=els[ii];if(!Zapatec.Form.Utils.ignoreField(el)){var zpField=new Zapatec.Form.Field({form:this,field:el,langId:this.config.langId,lang:this.config.lang,langCountryCode:this.config.langCountryCode,langEncoding:this.config.langEncoding,formConfig:this.config});if(this.config.startupFocusPosition){if(el.zpFormField!=null&&focusedFlag==false&&typeof(el.focus)!='undefined'&&(typeof(el.type)=='undefined'||typeof(el.type)!='undefined'&&el.type.toLowerCase()!='hidden')&&!el.disabled&&!el.readOnly){if(this.config.startupFocusPosition=="firstField"||(this.config.startupFocusPosition=="firstRequiredField"&&zpField.hasFeature("zpFormRequired"))||(this.config.startupFocusPosition=="firstIncorrectField"&&zpField.validate(true)!=null&&zpField.validate(true).length>0)){var tmp=el.getAttribute("autocomplete");try{el.setAttribute('autocomplete','off');el.focus();focusedFlag=true;}catch(e){}
el.setAttribute('autocomplete',tmp);}}}}}
var childElements=this.container.all?this.container.all:this.container.getElementsByTagName("*");for(var ii=childElements.length-1;ii>=0;ii--){var el=childElements[ii];Zapatec.Form.Utils.initMultipleField(el,true,this);this.initConditionalField(el);}
if(Zapatec.windowLoaded){this.formLoaded();}else{Zapatec.Utils.addEvent(window,"load",new Function("Zapatec.Widget.callMethod("+this.id+", 'formLoaded')"));}};Zapatec.Form.prototype.configure=function(objArgs){this.defineConfigOption('langId',Zapatec.Form.id);this.defineConfigOption('lang',"eng");this.defineConfigOption('form',null);this.defineConfigOption('statusImgPos','beforeField');this.defineConfigOption('showErrors',null);this.defineConfigOption('showErrorsOnSubmit',true);this.defineConfigOption('submitErrorFunc',Zapatec.Form.submitErrorFunc);this.defineConfigOption('submitValidFunc',null);this.defineConfigOption('asyncSubmitFunc',null);this.defineConfigOption('strict',false);this.defineConfigOption('asyncTheme',true);this.defineConfigOption('theme',"alternate");this.defineConfigOption('ajaxDebugFunc',null);this.defineConfigOption('dropDownTheme',"default");this.defineConfigOption('hideUntilThemeLoaded',false);this.defineConfigOption('putTabIndexesOnError',true);this.defineConfigOption('startupFocusPosition',"firstField");this.defineConfigOption('displayErrorWhileTyping',true);this.defineConfigOption('multipleCallback',Zapatec.Form.Utils.generateMultipleId);this.defineConfigOption('serverCallback');this.defineConfigOption('disableButtonsWhenAsyncSubmit',true);this.defineConfigOption('conditionalEvents');this.defineConfigOption('busyConfig');this.defineConfigOption('autoCompleteConfig');this.defineConfigOption('maskPlaceholder','_');Zapatec.Form.SUPERclass.configure.call(this,objArgs);this.config.form=Zapatec.Widget.getElementById(this.config.form);if(this.config.form==null||!this.config.form.nodeName||this.config.form.nodeName.toLowerCase()!="form"){Zapatec.Log({description:this.getMessage('noFormError')});throw this.getMessage('noFormError');}
if(typeof(this.config.conditionalEvents)=='string'){this.config.conditionalEvents=[this.config.conditionalEvents];}};Zapatec.Form.prototype.reconfigure=function(objArgs){if(objArgs.theme){Zapatec.Utils.removeClass(this.container,this.getClassName({prefix:"zpForm"}));}
Zapatec.Form.SUPERclass.reconfigure.call(this,objArgs);Zapatec.Utils.addClass(this.container,this.getClassName({prefix:"zpForm"}));};Zapatec.Form.prototype.addStandardEventListeners=function(){if(this.config.multipleCallback==Zapatec.Form.Utils.generateMultipleId){this.addEventListener("beforeDeleteMultiple",Zapatec.Form.Utils.beforeDeleteMultiple);}}
Zapatec.Form.prototype.asyncSubmit=function(){var self=this;if(this.processing==true){return false;}
if(this.config.showErrorsOnSubmit&&typeof(this.config.submitErrorFunc)=='function'&&!this.submit()){return false;}
var strUrl=this.container.getAttribute("action");if(Zapatec.is_ie){strUrl=this.container.attributes["action"];if(strUrl){strUrl=strUrl.nodeValue;}}
if(!strUrl){return false;}
if(this.config.disableButtonsWhenAsyncSubmit){this.toggleSubmits(true);this.processing=true;}
if(this.config.busyConfig){Zapatec.Transport.showBusy(this.config.busyConfig);}
if(this.config.serverCallback){return true;}
var arrContent=[];var objFormElements=this.container.elements;for(var iElm=0;iElm<objFormElements.length;iElm++){var formEl=objFormElements[iElm];if(!formEl.name||formEl.disabled){continue;}
if(formEl.nodeName.toLowerCase()=='input'&&(formEl.type.toLowerCase()=='radio'||formEl.type.toLowerCase()=='checkbox')&&!formEl.checked){continue;}
arrContent.push(formEl.name+'='+escape(formEl.value));}
var strMethod=this.container.getAttribute("method");if(Zapatec.is_ie){strMethod=this.container.attributes["method"];if(strMethod){strMethod=strMethod.nodeValue;}}
if(strMethod){strMethod=strMethod.toUpperCase();}
var strContent=arrContent.join('&');if(strMethod!='POST'){if(strMethod===''){strMethod="GET";}
strUrl+='?'+strContent;strContent=null;}
if(this.config.ajaxDebugFunc){this.config.ajaxDebugFunc(this.getMessage('ajaxDebugSeparator'));this.config.ajaxDebugFunc(this.getMessage('ajaxDebugSubmitTitle'));this.config.ajaxDebugFunc(strMethod+" "+strUrl);this.config.ajaxDebugFunc(this.getMessage('ajaxDebugQuery',strContent));}
var strEncoding=this.container.getAttribute("encoding");if(Zapatec.is_ie){strEncoding=this.container.attributes["encoding"];if(strEncoding){strEncoding=strEncoding.nodeValue;}}
Zapatec.Transport.fetch({url:strUrl,method:strMethod,contentType:strEncoding,content:strContent,onLoad:function(objText){if(self.config.ajaxDebugFunc){self.config.ajaxDebugFunc(self.getMessage('ajaxDebugResponse',objText.responseText));}
if(self.config.disableButtonsWhenAsyncSubmit){self.processing=false;self.toggleSubmits(false);}
if(objText.responseText==null){Zapatec.Log({description:self.getMessage('ajaxSubmitNoResponseError',objText.responseText)});return null;}
var objResponse=Zapatec.Transport.parseJson({strJson:objText.responseText});if(objResponse==null){Zapatec.Log({description:self.getMessage('ajaxSubmitCantParseError',objText.responseText)});return null;}
return self.processAsyncResponse(objResponse);},onError:function(objError){if(self.config.disableButtonsWhenAsyncSubmit){self.processing=false;self.toggleSubmits(false);}
var strError='';if(objError.errorCode){strError=objError.errorCode+' ';}
strError+=objError.errorDescription;if(self.config.ajaxDebugFunc){self.config.ajaxDebugFunc(self.getMessage('ajaxDebugResponseError',strError));}
if(self.config.showErrorsOnSubmit&&typeof(self.config.submitErrorFunc)=='function'){self.config.submitErrorFunc({serverSide:true,generalError:strError});}}});return false;};Zapatec.Form.prototype.processAsyncResponse=function(objResponse){if(this.config.disableButtonsWhenAsyncSubmit){this.processing=false;this.toggleSubmits(false);}
if(this.config.busyConfig){Zapatec.Transport.removeBusy(this.config.busyConfig);}
if(objResponse){if(objResponse.success){this.config.asyncSubmitFunc(objResponse.callbackArgs);}else if(this.config.showErrorsOnSubmit){var arrFieldErrors=[];var boolFocusSet=false;if(objResponse.fieldErrors){for(var strFieldName in objResponse.fieldErrors){for(var iElm=0;iElm<this.container.elements.length;iElm++){var objField=this.container.elements[iElm];if(objField.name&&objField.name==strFieldName){arrFieldErrors.push({field:objField,errorMessage:objResponse.fieldErrors[strFieldName],validator:''});if(objField.zpFormField!=null){objField.zpFormField.setImageStatus(objResponse.fieldErrors[strFieldName]);}
break;}}}}
if(typeof(this.config.submitErrorFunc)=='function'){this.config.submitErrorFunc({serverSide:true,generalError:objResponse.generalError||'',fieldErrors:arrFieldErrors});}}}else if(this.config.showErrorsOnSubmit&&typeof(this.config.submitErrorFunc)=='function'){this.config.submitErrorFunc({serverSide:true,generalError:this.getMessage('ajaxSubmitNoResponseError')});}};Zapatec.Form.prototype.toggleSubmits=function(disable){var inputs=this.container.getElementsByTagName("input");for(var ii=0;ii<inputs.length;ii++){if(inputs[ii].type=="submit"){inputs[ii].disabled=disable==true;}}};Zapatec.Form.prototype.reset=function(ev){for(var ii=0;ii<this.container.elements.length;ii++){var field=this.container.elements[ii].zpFormField;if(field!=null){field.setValueFromField();field.firstRun=true;field.blur();}}
if(!ev){ev=window.event;}
this.fireEvent("reset",ev);this.fireEvent("all",ev,"reset");};Zapatec.Form.prototype.submit=function(ev){var errors=this.validate(false);if(errors!=null&&errors.length>0&&this.config.showErrorsOnSubmit&&typeof(this.config.submitErrorFunc)=='function'){this.config.submitErrorFunc({serverSide:false,generalError:errors.length==1?this.getMessage('submitOneError'):this.getMessage('submitManyErrors',errors.length),fieldErrors:errors});try{errors[0].field.focus();}catch(e){}
return false;}
if(typeof(this.config.submitValidFunc)=='function'){this.config.submitValidFunc();}
if(!ev){ev=window.event;}
this.fireEvent("submit",ev);this.fireEvent("all",ev,"submit");return true;};Zapatec.Form.prototype.validate=function(onlyValidate){if(typeof(onlyValidate)=="undefined"){onlyValidate=true;}
var valid=true;var tabIndex=1;var errors=[];for(var ii=0;ii<this.container.elements.length;ii++){var el=this.container.elements[ii];if(el.zpFormField==null){continue;}
if(!onlyValidate){el.zpFormField.firstRun=false;}
var validate=el.zpFormField.validate(onlyValidate);var fieldValid=(validate==null||validate.length==0);if(this.config.putTabIndexesOnError){if(fieldValid){el.tabIndex=100+tabIndex++;if(!Zapatec.is_ie){delete(el.tabIndex);}}else{el.tabIndex=tabIndex;}}
if(!fieldValid){for(var jj=0;jj<validate.length;jj++){errors.push(validate[jj]);}}
valid=valid&&fieldValid;}
if(errors.length==0){errors=null;}
return errors;};Zapatec.Form.prototype.initConditionalField=function(field){var md=null;if(field.className&&(md=field.className.match(/zpForm(Display|Visible)When=([^\s]+)/))){var func=eval(md[2]);if(typeof(func)!="function"){return null;}
var handler=null;var self=this;if(md[1]=='Display'){handler=function(){var tmp=func();Zapatec.Form.Utils.toggleFormElements(field,tmp,false);if(field.zpFormField){Zapatec.Form.Utils.toggleFormElements(field.zpFormField.errorText,tmp,false);Zapatec.Form.Utils.toggleFormElements(field.zpFormField.requiredMark,tmp,false);}
if(field.zpMultipleButton){Zapatec.Form.Utils.toggleFormElements(field.zpFormField.requiredMark,tmp,false);}
if(self.config.strict){self.toggleSubmits(self.validate()!=null);}};}else if(md[1]=='Visible'){handler=function(){var tmp=func();Zapatec.Form.Utils.toggleFormElements(field,tmp,true);if(field.zpFormField){Zapatec.Form.Utils.toggleFormElements(field.zpFormField.errorText,tmp,true);Zapatec.Form.Utils.toggleFormElements(field.zpFormField.requiredMark,tmp,true);}
if(field.zpMultipleButton){Zapatec.Form.Utils.toggleFormElements(field.zpFormField.requiredMark,tmp,true);}
if(self.config.strict){self.toggleSubmits(self.validate()!=null);}};}
handler();var eventTypes=this.config.conditionalEvents;if(!eventTypes||eventTypes.length==0){eventTypes=["all"];}
for(var ii=0;ii<eventTypes.length;ii++){this.addEventListener(eventTypes[ii],handler);}}};Zapatec.Form.prototype.addEvent=Zapatec.Form.prototype.addChangeHandler=function(func,eventTypes){if(typeof(func)=='string'){func=eval(func);}
if(typeof(func)!='function'){return false;}
if(!eventTypes||eventTypes.length==0){eventTypes=["all"];}
if(typeof(eventTypes)=='string'){eventTypes=[eventTypes];}
for(var ii=0;ii<eventTypes.length;ii++){this.addEventListener(eventTypes[ii],func);}
func(null,"addEvent");if(this.config.strict){this.toggleSubmits(this.validate()!=null);}
return true;};Zapatec.Form.prototype.runChangeHandlers=function(){this.fireEvent("all",null,"runChangeHandlers");};Zapatec.Form.prototype.formLoaded=function(){for(var ii=0;ii<this.container.elements.length;ii++){var zpField=this.container.elements[ii].zpFormField;if(zpField!=null){zpField.setValueFromField(true);}}
this.fireEvent("formLoaded");this.fireEvent("all",null,"formLoaded");};Zapatec.Form.prototype.destroy=function(){for(var ii=0;ii<this.container.elements.length;ii++){var field=this.container.elements[ii];if(field.zpFormField){field.zpFormField.destroy();}}
this.discard();};Zapatec.Form.setupAll=function(params){var forms=document.getElementsByTagName('form');if(!params){params={};}
if(!params.startupFocusPosition){params.startupFocusPosition=null;}
if(forms&&forms.length){for(var ff=forms.length-1;ff>=0;ff--){if(forms[ff].zpForm){continue;}
var arrMatch=forms[ff].className.match(/zpForm(\S*)/);if(arrMatch){var strThemeName=arrMatch[1];var objConfig=Zapatec.Utils.clone(params);if((objConfig.theme==null||objConfig.theme=="")&&strThemeName){objConfig.theme=strThemeName;}
objConfig.form=forms[ff];new Zapatec.Form(objConfig);}}}};Zapatec.Form.submitErrorFunc=function(objErrors){var message=objErrors.generalError+'\n';if(objErrors.fieldErrors&&objErrors.fieldErrors.length){for(var ii=0;ii<objErrors.fieldErrors.length;ii++){message+=(ii+1)+': Field '+objErrors.fieldErrors[ii].field.name+' '+objErrors.fieldErrors[ii].errorMessage+"\n";}
message=message.substr(0,message.length-1);}
alert(message);};Zapatec.Form.IGNORE_CLASSNAME="zpFormInternalEl";Zapatec.Form.Field=function(objArgs){Zapatec.Form.SUPERconstructor.call(this,objArgs);};Zapatec.Form.Field.id="Zapatec.Form.Field";Zapatec.inherit(Zapatec.Form.Field,Zapatec.Widget);Zapatec.Form.Field.prototype.configure=function(objArgs){this.defineConfigOption('theme',objArgs.formConfig&&objArgs.formConfig.theme?objArgs.formConfig.theme:"");this.defineConfigOption('themePath',objArgs.formConfig&&objArgs.formConfig.themePath?objArgs.formConfig.themePath:Zapatec.Form.path+"../styles/");if(!objArgs.lang&&objArgs.formConfig.lang){objArgs.lang=objArgs.formConfig.lang;}
if(!objArgs.langCountryCode&&objArgs.formConfig.langCountryCode){objArgs.langCountryCode=objArgs.formConfig.langCountryCode;}
if(!objArgs.langEncoding&&objArgs.formConfig.langEncoding){objArgs.langEncoding=objArgs.formConfig.langEncoding;}
this.defineConfigOption('form');this.defineConfigOption('formConfig',{});this.defineConfigOption('field');this.defineConfigOption('langId',"Zapatec.Form");Zapatec.Form.SUPERclass.configure.call(this,objArgs);this.config.form=Zapatec.Widget.getElementById(this.config.form);this.config.field=Zapatec.Widget.getElementById(this.config.field);};Zapatec.Form.Field.prototype.reconfigure=function(objArgs){Zapatec.Form.SUPERclass.reconfigure.call(this,objArgs);};Zapatec.Form.Field.prototype.init=function(objArgs){if(Zapatec.Form.Utils.ignoreField(objArgs.field)||objArgs.field.zpFormField){return null;}
this.autoCompleteOptions=[];this.form=null;this.state={};this.features={};this.keyPressCounter=0;this.firstRun=true;this.chars=null;this.enteredValue=null;this.dropDown=null;this.isBooleanField=false;this.isEditing=false;Zapatec.Form.SUPERclass.init.call(this,objArgs);this.field=this.config.field;this.features=Zapatec.Form.Utils.getTokens(this.field.className," ");if(this.hasFeature("zpFormRequired")){this.setFeature("zpFormRequired",true);}
this.isBooleanField=(this.field.nodeName.toLowerCase()=='input'&&(this.field.type.toLowerCase()=='radio'||this.field.type.toLowerCase()=='checkbox'));var md=null;if(md=this.field.className.match(/zpFormAllowed-(\S+)/)){if(!this.features['zpFormAllowedChars']){this.features['zpFormAllowedChars']="";}
this.features['zpFormAllowedChars']+='\\'+md[1].split('').join('\\');}
if(typeof(this.features['zpFormAllowedChars'])!='undefined'&&this.getFeature('zpFormAllowedChars')==null){var undef;this.features['zpFormAllowedChars']=undef;}
if((this.hasFeature("zpFormAutoComplete")||this.hasFeature("zpFormAutoCompleteStrict"))&&this.field.nodeName.toUpperCase()=="SELECT"){var input=document.createElement('input');for(var ii=0;ii<this.field.attributes.length;ii++){var attr=this.field.attributes[ii];if(attr.name=='class'){input.className=this.field.getAttribute(attr.name);}else{input.setAttribute(attr.name,this.field.getAttribute(attr.name));}}
for(var ii=0;ii<this.field.options.length;ii++){this.autoCompleteOptions.push(this.field.options[ii].innerHTML);}
if(this.field.selectedIndex!=null){var val=null;if(this.field.options[this.field.selectedIndex].value!=null&&this.field.options[this.field.selectedIndex].value!=""){val=this.field.options[this.field.selectedIndex].value;}else{val=this.field.options[this.field.selectedIndex].innerHTML;}
input.value=val;input.setAttribute("value",val);}
Zapatec.Utils.insertAfter(this.field,input);Zapatec.Utils.destroy(this.field);input.type='text';this.field=input;}
if(this.hasFeature("zpFormAutoComplete")||this.hasFeature("zpFormAutoCompleteStrict")||this.hasFeature("zpFormSuggest")){this.field.setAttribute("autocomplete","off");this.field.autoComplete="off";}
var self=this;this.form=this.config.form;if(!this.form){this.form={container:{elements:[this.field]},fireEvent:function(){},validate:function(){return self.validate()},toggleSubmits:function(){},container:this.field.parentNode};if(this.field.parentNode){Zapatec.Utils.addClass(this.field.parentNode,this.getClassName({prefix:"zpForm"}));}}
if(this.hasFeature("zpFormMask")){if(this.field.hasAttribute&&this.field.hasAttribute("maxlength")){this.field.setAttribute("maxlength",null);}
var mask=this.getFeature("zpFormMask");var maskChars=mask.split('');this.chars=[];this.enteredValue=[];for(var ii=0;ii<maskChars.length;ii++){var tmp=null;switch(maskChars[ii]){case"0":tmp="[0-9]";break;case"L":tmp="[a-zA-Z]";break;case"A":tmp="[0-9a-zA-Z]";break;case"&":tmp=".";break;case"\\":i++;if(i>=maskChars.length)
break;default:this.chars.push(maskChars[ii]);this.enteredValue.push(maskChars[ii]);}
if(tmp!=null){var re=new RegExp("^"+tmp+"$");this.chars.push(re);this.enteredValue.push(null);}}}
this.createProperty(this.field,"zpFormField",this);var oldOnKeyDown=this.field.onkeydown||function(){return true;};Zapatec.Utils.createProperty(this.field,"onkeydown",function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;var res=oldOnKeyDown();return zpField.keydown(ev)&&res;});var oldOnKeyPress=this.field.onkeypress||function(){return true;};Zapatec.Utils.createProperty(this.field,"onkeypress",function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;var res=oldOnKeyPress();return zpField.keypress(ev)&&res;});Zapatec.Utils.addEvent(this.field,'keyup',function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;return zpField.keyup(ev);});Zapatec.Utils.addEvent(this.field,'focus',function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;return zpField.focus(ev);});Zapatec.Utils.addEvent(this.field,'blur',function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;return zpField.blur(ev);});if(this.field.nodeName.toLowerCase()=='select'){Zapatec.Utils.addEvent(this.field,'change',function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;return zpField.valueChanged(ev);});}
var onChangeFunc=function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;return zpField.valueChanged(ev);};Zapatec.Utils.addEvent(this.field,'keyup',onChangeFunc);if(Zapatec.is_ie){Zapatec.Utils.addEvent(this.field,'paste',onChangeFunc);}else if(Zapatec.is_gecko){Zapatec.Utils.addEvent(this.field,'input',onChangeFunc);}else{Zapatec.Utils.addEvent(this.field,'change',onChangeFunc);}
if(this.isBooleanField){onChangeFunc=function(ev){var zpField=Zapatec.Utils.getTargetElement(ev).zpFormField;return zpField.booleanChanged();};Zapatec.Utils.addEvent(this.field,'change',onChangeFunc);Zapatec.Utils.addEvent(this.field,'click',onChangeFunc);}
this.requiredMark=Zapatec.Utils.createElement('span');this.requiredMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.requiredMark.id="zpFormField"+this.id+"StatusImg1";this.editingMark=this.requiredMark.appendChild(Zapatec.Utils.createElement('span'));this.editingMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.editingMark.id="zpFormField"+this.id+"StatusImg2";this.emptyMark=this.editingMark.appendChild(Zapatec.Utils.createElement('span'));this.emptyMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.emptyMark.id="zpFormField"+this.id+"StatusImg3";this.validMark=this.emptyMark.appendChild(Zapatec.Utils.createElement('span'));this.validMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.validMark.id="zpFormField"+this.id+"StatusImg4";this.fetchingMark=this.validMark.appendChild(Zapatec.Utils.createElement('span'));this.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.fetchingMark.id="zpFormField"+this.id+"StatusImg5";this.statusImg=this.fetchingMark.appendChild(Zapatec.Utils.createElement('span'));this.statusImg.className=Zapatec.Form.IGNORE_CLASSNAME+' zpStatusImg';this.statusImg.id="zpFormField"+this.id+"StatusImg";this.addCircularRef(this,"statusImg");this.addCircularRef(this,"fetchingMark");this.addCircularRef(this,"validMark");this.addCircularRef(this,"emptyMark");this.addCircularRef(this,"editingMark");this.addCircularRef(this,"requiredMark");this.errorText=Zapatec.Utils.createElement('span');this.errorText.id="zpFormField"+this.id+"ErrorText";this.errorText.className=Zapatec.Form.IGNORE_CLASSNAME+' zpFormError';if(this.field.type&&this.field.type.toLowerCase()=="hidden"){this.errorText.style.display='none';this.requiredMark.style.display='none';}
if(this.isBooleanField){if(this.field.type.toLowerCase()=="checkbox"){this.field.className+=" zpFormCheckbox";this.statusImg.className+=" zpCheckboxStatusImg";}else if(this.field.type.toLowerCase()=="radio"){this.field.className+=" zpFormRadio";this.statusImg.className+=" zpRadioStatusImg";}else{this.statusImg.className+=" zpCommonStatusImg";}}else{this.statusImg.className+=" zpCommonStatusImg";}
var lastNode=this.field;if(this.config.formConfig.statusImgPos=='afterField'){Zapatec.Utils.insertAfter(this.field,this.requiredMark);lastNode=this.requiredMark;}else if(this.config.formConfig.statusImgPos=='beforeField'){this.field.parentNode.insertBefore(this.requiredMark,this.field);}
if(this.config.formConfig.showErrors=='afterField'){Zapatec.Utils.insertAfter(this.field,this.errorText);lastNode=this.errorText;}else if(this.config.formConfig.showErrors=='beforeField'){this.field.parentNode.insertBefore(this.errorText,this.field);}
if(this.hasFeature("zpFormMultiple")){this.createProperty(this.field,"zpLastNode",lastNode);}
if(this.hasFeature("zpFormSuggest")||this.hasFeature("zpFormAutoComplete")||this.hasFeature("zpFormAutoCompleteStrict")){if(typeof(Zapatec.AutoComplete)=='undefined'){Zapatec.Transport.loadJS({url:Zapatec.zapatecPath+'../zpautocomplete/src/zpautocomplete-core.js',async:true,onLoad:function(){self.initDropDown();}});}else{this.initDropDown();}}
if(this.field.value){this.ajaxValidate();this.suggestValue();this.ajaxFill();}
this.setValueFromField(true);};Zapatec.Form.Field.DELAYED_INTERVAL=1000;Zapatec.Form.Field.prototype.initDropDown=function(){var self=this;var arrow=Zapatec.Utils.createElement("span");arrow.className=Zapatec.Form.IGNORE_CLASSNAME+" dropDownArrow";arrow.id="zpFormField"+this.id+"DropDownArrow";this.createProperty(arrow,"onclick",function(ev){self.field.focus(ev);self.autoCompleteValue(self.getAutoCompleteOptions(true));self.suggestValue(true);});Zapatec.Utils.insertAfter(this.field,arrow);var tmpConfig=Zapatec.Utils.clone(this.config.formConfig.autoCompleteConfig);if(!tmpConfig){tmpConfig={};}
tmpConfig.fields=[this.field];tmpConfig.width="auto";tmpConfig.dataOnDemand=false;tmpConfig.convertTip=function(tipObj){return tipObj.title;}
tmpConfig.selectTip=function(tipObj){self.setValue(tipObj.title)
self.valueChanged();if(self.field.onchange){self.field.onchange();}}
this.dropDown=new Zapatec.AutoComplete(tmpConfig);this.dropDown.field=this.field;};Zapatec.Form.Field.prototype.valueChanged=function(ev){if(this.hasFeature("zpFormAllowedChars")||this.hasFeature("zpFormMask")){this.setValueFromField();}else{this.validate();}
if(!ev){ev=window.event;}
this.fireEvent("valueChanged",ev);this.fireEvent("all",ev,"valueChanged");this.form.fireEvent("valueChanged",ev);this.form.fireEvent("all",ev,"valueChanged");return true;};Zapatec.Form.Field.prototype.booleanChanged=function(ev){if(!this.isBooleanField){return;}
var elements=this.form.container.elements;for(var ii=0;ii<elements.length;ii++){var el=elements[ii];if(el.name==this.field.name&&el.zpFormField){if(!this.firstRun){el.zpFormField.firstRun=false;}
el.zpFormField.validate();}}
if(!ev){ev=window.event;}
this.fireEvent("valueChanged",ev);this.fireEvent("booleanValueChanged",ev);this.fireEvent("all",ev,"booleanValueChanged");this.form.fireEvent("valueChanged",ev);this.form.fireEvent("booleanValueChanged",ev);this.form.fireEvent("all",ev,"booleanValueChanged");return true;};Zapatec.Form.Field.prototype.keydown=function(evt){if(!this.isEditing){return false;}
if(!evt){evt=window.event;}
this.fireEvent("keydown",evt);this.fireEvent("all",evt,"keydown");this.form.fireEvent("keydown",evt);this.form.fireEvent("all",evt,"keydown");this.state.lastSelectionStart=this.getSelectionStart();this.state.lastSelectionEnd=this.getSelectionEnd();if(Zapatec.is_ie&&(this.hasFeature('zpFormAllowedChars')||this.hasFeature("zpFormMask"))){var tmpArr=Zapatec.Utils.getCharFromEvent(evt);var charCode=tmpArr.charCode;var newChar=tmpArr.chr;if(Zapatec.Form.Utils.isSpecialKey(charCode,newChar)||this.processFunctionalKeys(evt)==true){return true;}
if(this.hasFeature("zpFormMask")){if(this.processCustomKeys(charCode)==true){return true;}
return false;}
if(this.hasFeature('zpFormAllowedChars')){this.setValueFromField();}}
if(this.dropDown){this.dropDown.hide();}
return true;};Zapatec.Form.Field.prototype.keypress=function(evt){if(!this.isEditing){return false;}
if(!evt){evt=window.event;}
this.fireEvent("keypress",evt);this.fireEvent("all",evt,"keypress");this.form.fireEvent("keypress",evt);this.form.fireEvent("all",evt,"keypress");if(this.hasFeature('zpFormAllowedChars')){if(this.processFunctionalKeys(evt)==true){return true;}
var tmpArr=Zapatec.Utils.getCharFromEvent(evt)
var charCode=tmpArr.charCode;var newChar=tmpArr.chr;if((Zapatec.Form.Utils.isSpecialKey(charCode,newChar)||charCode==8||charCode==46)){return true;}
var allowed=new RegExp('['+this.getFeature('zpFormAllowedChars')+']');this.setValueFromField();if(!(allowed.test(newChar))){Zapatec.Utils.addClass(this.field,"zpWrongValue");this.field.readonly=true;var self=this;setTimeout(function(){Zapatec.Utils.removeClass(self.field,"zpWrongValue");self.field.readonly=false;},100);return false;}
return true;}
if(this.hasFeature("zpFormMask")){var self=this;var tmpArr=Zapatec.Utils.getCharFromEvent(evt)
var charCode=tmpArr.charCode;var newChar=tmpArr.chr;if(this.processFunctionalKeys(evt)==true){return true;}
this.setValueFromField();var pos=this.getSelectionStart();if(charCode==null&&newChar==null){return false;}
if(!Zapatec.is_ie){if(Zapatec.Form.Utils.isSpecialKey(charCode,newChar)){return true;}
if(this.processCustomKeys(charCode)==false){return false;}}
if(typeof(this.chars[pos])=='string'){var newPos=this.getNextAvailablePosition(pos);if(newPos==null||newPos==pos)
return false;this.setCaretPosition(newPos);pos=newPos;}
if(pos>=this.chars.length||typeof(this.chars[pos])!='string'&&!newChar.match(this.chars[pos])||typeof(this.chars[pos])=='string'&&newChar!=this.chars[pos]){Zapatec.Utils.addClass(this.field,"zpWrongValue");this.field.readonly=true;setTimeout(function(){Zapatec.Utils.removeClass(self.field,"zpWrongValue");self.field.readonly=false;},100);this.setValue();this.setCaretPosition(pos);}else{this.enteredValue[pos]=newChar;this.setValue();var newPos=this.getNextAvailablePosition(pos);if(newPos==null){newPos=pos+1;}
this.setCaretPosition(newPos);}
if(evt&&evt.preventDefault){evt.preventDefault();}
return false;}
return true;};Zapatec.Form.Field.prototype.keyup=function(evt){if(!this.isEditing){return false;}
if(!evt){evt=window.event;}
this.fireEvent("keyUp",evt);this.fireEvent("all",evt,"keyup");this.form.fireEvent("keyUp",evt);this.form.fireEvent("all",evt,"keyup");if(evt){var tmp=Zapatec.Utils.getCharFromEvent(evt);if(Zapatec.Form.Utils.isSpecialKey(tmp.charCode,tmp.chr)||((tmp.charCode==8||tmp.charCode==46)&&this.state.lastSelectionStart!=this.state.lastSelectionEnd)){return true;}}
this.validate();if(this.hasFeature("zpFormAutoComplete")||this.hasFeature("zpFormAutoCompleteStrict")){this.autoCompleteValue(this.getAutoCompleteOptions());}
this.keyPressCounter++;var self=this;setTimeout(function(){self.runDelayedActions()},Zapatec.Form.Field.DELAYED_INTERVAL);return true;};Zapatec.Form.Field.prototype.focus=function(evt){if(!evt){evt=window.event;}
if(this.field.readOnly){return;}
this.isEditing=true;this.firstRun=false;if(this.hasFeature("zpFormMask")){if(this.isEmpty()){this.setValue();this.setCaretPosition(0);}}
if(this.isBooleanField){this.booleanChanged(evt);}
this.fireEvent("focus",evt);this.fireEvent("all",evt,"focus");this.form.fireEvent("focus",evt);this.form.fireEvent("all",evt,"focus");this.validate();};Zapatec.Form.Field.prototype.blur=function(evt){if(!evt){evt=window.event;}
if(this.hasFeature("zpFormMask")&&!this.isFilled()){Zapatec.Form.Utils.setValue(this.field,"");}
if(!this.isEditing){return;}
this.isEditing=false;if(this.hasFeature("zpFormAllowedChars")){this.setValueFromField(true);}
this.fireEvent("blur",evt);this.fireEvent("all",evt,"blur");this.form.fireEvent("blur",evt);this.form.fireEvent("all",evt,"blur");this.validate();};Zapatec.Form.Field.prototype.validate=function(onlyValidate){if(!this.field.className||(this.field.disabled&&!this.firstRun)){return null;}
var message=null;var errors=[];var isRequired=this.isRequired();var isEmpty=this.isEmpty();if(this.isBooleanField&&!isRequired){isEmpty=this.field.checked;}
if(this.firstRun&&!isEmpty||this.field.disabled){this.firstRun=false;}
var validatorUsed=isRequired;var validatorName=null;var l10nMessage=null;var messageArgument=null;function addError(self,errors,validatorName,l10nMessage,messageArgument){if(!validatorName){return null}
var message=self.hasFeature(validatorName+"Error")?self.getFeature(validatorName+"Error"):self.getMessage(l10nMessage,messageArgument);if(!message){message=self.getMessage(l10nMessage,messageArgument);}
message=message.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/\>/g,'&gt;');errors.push({field:self.field,errorMessage:message,validator:validatorName});return message;}
if(isEmpty){validatorUsed=true;if(isRequired){validatorName="zpFormRequired";l10nMessage="isRequiredError";}}else{for(var vName in this.features){if(vName=='zpFormMask'){validatorUsed=true;if(!this.isMaskFullyFilled()){validatorName="zpFormMask";l10nMessage='maskNotFilledError';messageArgument=this.getFeature("zpFormMask");break;}}
if(vName=='zpFormAutoCompleteStrict'){validatorUsed=true;var found=false;var currVal=this.getValue();for(var ii=this.autoCompleteOptions.length-1;ii>=0;ii--){if(currVal==this.autoCompleteOptions[ii]){found=true;break;}}
if(!found){validatorName="zpFormAutoCompleteStrict";l10nMessage="noSuchAutoCompleteValueError";}}
if(typeof(Zapatec.Form.dataTypes[vName])!='undefined'){validatorUsed=true;var validator=Zapatec.Form.dataTypes[vName];var validatorPassed=true;messageArgument=this.getFeature(vName);if(validator.regex){validatorPassed=validator.regex.test(this.getValue());}else if(validator.func){validatorPassed=validator.func(this.getValue(),this.getFeature(vName));}
if(!validatorPassed){validatorName=vName;l10nMessage=validator.error;}}
if(validatorName){message=addError(this,errors,validatorName,l10nMessage,messageArgument)||message;validatorName=null;}}
if(this.ajaxError!=null){validatorUsed=true;validatorName="zpFormValidate";l10nMessage=this.ajaxError;}}
message=addError(this,errors,validatorName,l10nMessage,messageArgument)||message;if(!onlyValidate&&validatorUsed){this.setImageStatus(message,isEmpty);}
return errors;};Zapatec.Form.Field.prototype.setImageStatus=function(status,isEmpty){var isRequired=this.isRequired();if(typeof(isEmpty)=='undefined'){isEmpty=this.isEmpty();}
this.requiredMark.className=Zapatec.Form.IGNORE_CLASSNAME+(isRequired?' zpIsRequired':' zpNotRequired');this.editingMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.emptyMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.validMark.className=Zapatec.Form.IGNORE_CLASSNAME;this.errorText.innerHTML="";if(this.config.formConfig.strict){if(status==null){this.form.toggleSubmits(this.form.validate()!=null);}else{this.form.toggleSubmits(true);}}
if(!this.firstRun&&(isRequired&&isEmpty||!isEmpty)){this.editingMark.className=Zapatec.Form.IGNORE_CLASSNAME+(this.isEditing?' zpIsEditing':' zpNotEditing');this.emptyMark.className=Zapatec.Form.IGNORE_CLASSNAME+(isEmpty?' zpIsEmpty':' zpNotEmpty');this.validMark.className=Zapatec.Form.IGNORE_CLASSNAME+(!status?' zpIsValid':' zpNotValid');if((isRequired&&isEmpty&&this.isEditing)||(this.isEditing&&!this.config.formConfig.displayErrorWhileTyping)){if(!(this.config.formConfig.showErrors=='tooltip'&&Zapatec.Tooltip)&&!this.isBooleanField){status=null;}}
if(!status){if(typeof(this.config.formConfig.showErrors)=='function'){this.config.formConfig.showErrors(this.field);}else if(this.tooltip){this.tooltip.hide();}else if(this.errorText){this.errorText.style.display="none";}}else if(status){if(this.config.formConfig.showErrors=='beforeField'||this.config.formConfig.showErrors=='afterField'){this.errorText.style.display="";this.errorText.innerHTML=status;}else if(typeof(this.config.formConfig.showErrors)=='function'){this.config.formConfig.showErrors(this.field,status);}else if(this.config.formConfig.showErrors=='tooltip'&&Zapatec.Tooltip){if(!this.tooltip){this.tooltip=new Zapatec.Tooltip({target:this.requiredMark,content:status,parent:this.form.container});}
this.tooltip.setContent(status);if(this.isEditing){var offs=Zapatec.Utils.getElementOffset(this.requiredMark);this.tooltip.show(offs.left,offs.top+offs.height);}else{this.tooltip.hide();}}else{this.statusImg.title=status;}}}};Zapatec.Form.Field.prototype.isEmpty=function(){if(!this.hasFeature("zpFormMask")){if(this.isBooleanField){var elements=this.form.container.elements;for(var ii=elements.length-1;ii>=0;ii--){var element=elements[ii];if(element.name==this.field.name&&element.checked){return false;}}
return true;}else{var currVal=this.getValue();return(currVal==null||currVal.length==0);}}else{for(ii=0;ii<this.enteredValue.length;ii++){if(typeof(this.chars[ii])!='string'&&this.enteredValue[ii]!=null){return false;}}
return true;}};Zapatec.Form.Field.prototype.isFilled=function(){if(this.hasFeature("zpFormMask")){for(ii=0;ii<this.enteredValue.length;ii++){if(typeof(this.chars[ii])!='string'&&this.enteredValue[ii]!=null){return true;}}
return false;}else{var currVal=this.getValue();return(currVal!=null&&currVal.length>0);}};Zapatec.Form.Field.prototype.isMaskFullyFilled=function(){if(this.hasFeature("zpFormMask")){for(ii=0;ii<this.enteredValue.length;ii++){if(typeof(this.chars[ii])!='string'&&this.enteredValue[ii]==null){return false;}}
return true;}else{return this.isFilled();}};Zapatec.Form.Field.prototype.hasFeature=function(feature){if(!feature||typeof(this.features[feature])=='undefined'){return false;}
return true;};Zapatec.Form.Field.prototype.getFeature=function(feature){return this.features[feature];};Zapatec.Form.Field.prototype.setFeature=function(feature,value){this.features[feature]=value;};Zapatec.Form.Field.prototype.isRequired=function(){var isRequired=this.getFeature("zpFormRequired");return isRequired;}
Zapatec.Form.Field.prototype.getNextAvailablePosition=function(pos){if(pos+1>=this.enteredValue.length){return null;}
if(typeof(this.chars[pos+1])=='string'){return this.getNextAvailablePosition(pos+1);}
return pos+1;};Zapatec.Form.Field.prototype.getPrevAvailablePosition=function(pos){if(pos-1<0){return null;}
if(typeof(this.chars[pos-1])=='string'){return this.getPrevAvailablePosition(pos-1);}
return pos-1;};Zapatec.Form.Field.prototype.setCaretPosition=function(startPos,endPos){var valLength=this.getValue().length;if(!this.isSelectionAppliable()||!this.isEditing){return null;}
if(isNaN(parseInt(startPos))){return false;}else{startPos=parseInt(startPos);if(startPos<0){startPos=0;}else if(startPos>valLength){startPos=valLength;}}
if(endPos==null||isNaN(parseInt(endPos))||parseInt(endPos)<startPos){endPos=startPos;}else{endPos=parseInt(endPos);if(endPos<0){endPos=0;}else if(endPos>valLength){endPos=valLength;}}
if(typeof(this.field.createTextRange)=="object"){var range=this.field.createTextRange();range.moveEnd("character",endPos-this.getValue().length);range.moveStart("character",startPos);range.select();return true;}else if(typeof(this.field.setSelectionRange)=='function'){this.field.setSelectionRange(startPos,endPos);return true;}
return false;};Zapatec.Form.Field.prototype.getSelectionStart=function(){if(this.field.disabled||!this.isSelectionAppliable()||!this.isEditing){return 0;}
if(document.selection){return Math.abs(document.selection.createRange().moveStart("character",-1000000));}else if(typeof(this.field.selectionStart)!="undefined"){var selStart=this.field.selectionStart;if(selStart==2147483647){selStart=0;}
return selStart;}
return 0;};Zapatec.Form.Field.prototype.getSelectionEnd=function(){if(this.field.disabled||!this.isSelectionAppliable()||!this.isEditing){return 0;}
if(document.selection){return this.field.value.length-Math.abs(document.selection.createRange().moveEnd("character",1000000));}else if(typeof(this.field.selectionEnd)!="undefined"){return this.field.selectionEnd;}
return 0;};Zapatec.Form.Field.prototype.processCustomKeys=function(charCode){var selStart=this.getSelectionStart();var selEnd=this.getSelectionEnd();if(selStart==selEnd){if(charCode==8){var newPos=this.getPrevAvailablePosition(selStart);if(newPos==null||newPos==selStart){return false;}
this.enteredValue[newPos]=null;this.setValue();this.setCaretPosition(newPos+(Zapatec.is_opera?1:0));return false;}
if(charCode==46){if(typeof(this.chars[selStart])=='string'){return false;}
this.enteredValue[selStart]=null;this.setValue();this.setCaretPosition(selStart)
return false;}}else{if(charCode==8||charCode==46){for(var ii=selStart;ii<selEnd;ii++){if(typeof(this.chars[ii])!='string'){this.enteredValue[ii]=null;}}
this.setValue();this.setCaretPosition(selStart+(Zapatec.is_opera?1:0));return false;}}
return true;};Zapatec.Form.Field.prototype.processFunctionalKeys=function(evt){var tmpArr=Zapatec.Utils.getCharFromEvent(evt)
var charCode=tmpArr.charCode;var newChar=tmpArr.chr;if(evt.ctrlKey||(typeof(evt.metaKey)!='undefined'&&evt.metaKey)){if(charCode==8){this.setCaretPosition(0,this.getSelectionStart());return false;}else if(charCode==46){this.setCaretPosition(this.getSelectionStart(),this.getValue().length);return false;}else if(newChar=='v'||newChar=='V'){this.setValueFromField();return true;}
return true;}else if(evt.shiftKey){if(charCode==37||charCode==39){return true;}else if(charCode==45){this.setValueFromField();return true;}}else if(evt.altKey){return true;}
return false;};Zapatec.Form.Field.prototype.setValueFromField=function(runImmediately){if(!runImmediately){var self=this;setTimeout(function(){self.setValueFromField(true);},1);return;}
var selStart=this.getSelectionStart();var selEnd=this.getSelectionEnd();var editMode=this.isEditing;this.isEditing=true;this.setValue(Zapatec.Form.Utils.getValue(this.field));if(this.isBooleanField){this.booleanChanged();}
this.isEditing=editMode;this.validate();if(!this.isEditing){this.blur();}else{this.setCaretPosition(selStart,selEnd);}};Zapatec.Form.Field.prototype.getValue=function(){return Zapatec.Form.Utils.getValue(this.field);}
Zapatec.Form.Field.prototype.setValue=function(value){if(value==null){value="";}
if(this.hasFeature('zpFormAllowedChars')){var notallowed=new RegExp('[^'+this.getFeature('zpFormAllowedChars')+']','g');value=value.replace(notallowed,"");}
if(this.hasFeature('zpFormMask')){var val="";if(this.isEditing||this.isFilled()){for(ii=0;ii<this.chars.length;ii++){if(ii<value.length){if(typeof(this.chars[ii])!="string"){if(this.chars[ii].test(value.charAt(ii))){this.enteredValue[ii]=value.charAt(ii);val+=value.charAt(ii);}else{this.enteredValue[ii]=null;if(this.config.formConfig.maskPlaceholder){val+=this.config.formConfig.maskPlaceholder;}}}else{this.enteredValue[ii]=this.chars[ii];val+=this.chars[ii];}}else if(arguments.length>0){if(typeof(this.chars[ii])=='string'){val+=this.chars[ii];}else{this.enteredValue[ii]=null;if(this.config.formConfig.maskPlaceholder){val+=this.config.formConfig.maskPlaceholder;}}}else{if(typeof(this.chars[ii])=='string'){val+=this.chars[ii];}else{var tempHolderString;if(this.config.formConfig.maskPlaceholder){tempHolderString=this.config.formConfig.maskPlaceholder;}else{tempHolderString="";}
val+=this.enteredValue[ii]==null?tempHolderString:this.enteredValue[ii];}}}}
value=val;}
var oldScrollTop=null;var oldScrollLeft=null;if(this.field.nodeName.toLowerCase()=='textarea'&&typeof(this.field.scrollTop)!='undefined'){oldScrollTop=this.field.scrollTop;oldScrollLeft=this.field.scrollLeft;}
var retVal=Zapatec.Form.Utils.setValue(this.field,value);if(this.field.nodeName.toLowerCase()=='textarea'&&oldScrollTop!=null){this.field.scrollTop=oldScrollTop;this.field.scrollLeft=oldScrollLeft;}
return retVal;};Zapatec.Form.Field.prototype.runDelayedActions=function(){this.keyPressCounter--;if(this.keyPressCounter!=0){return null;}
this.ajaxValidate();this.suggestValue();this.ajaxFill();};Zapatec.Form.Field.prototype.ajaxValidate=function(){if(!this.hasFeature("zpFormValidate")){return null;}
var valid=this.validate();if(!(valid==null||valid!=null&&(valid.length==0||valid.length==1&&valid[0].validator=="zpFormValidate"))){return null;}
var submitUrl=this.getFeature("zpFormValidate");var submitMethod=this.getFeature("zpFormValidateMethod");var submitParam=this.getFeature("zpFormValidateParam");var submitQuery=this.getFeature("zpFormValidateQuery");if(typeof(submitMethod)!='string'){submitMethod="GET"}
if(typeof(submitParam)!='string'){submitParam=this.field.name;}
if(typeof(submitQuery)!='string'){submitQuery="";}
submitQuery+="&"+escape(submitParam)+"="+escape(this.getValue());if(submitUrl.indexOf("?")<0){submitUrl+="?";}
submitUrl+="&"+Math.random();if(submitMethod=='GET'){submitUrl+="&"+submitQuery;}
this.fetchingMark.className="zpIsFetching "+Zapatec.Form.IGNORE_CLASSNAME;var self=this;if(this.config.formConfig.ajaxDebugFunc){this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugSeparator'));this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugValidateTitle',this.field.name));this.config.formConfig.ajaxDebugFunc(submitMethod+" "+submitUrl);this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugQuery',("GET"?"":submitQuery)));}
Zapatec.Transport.fetch({url:submitUrl,content:submitMethod=="GET"?null:submitQuery,method:submitMethod,onLoad:function(objText){if(self.config.formConfig.ajaxDebugFunc){self.config.formConfig.ajaxDebugFunc(self.getMessage('ajaxDebugResponse',objText.responseText));}
self.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME+"zpNotFetching";if(objText.responseText==null){Zapatec.Log({description:self.getMessage('ajaxValidateNoResponseError',objText.responseText)});return null;}
var objResponse=Zapatec.Transport.parseJson({strJson:objText.responseText});if(objResponse==null){Zapatec.Log({description:self.getMessage('ajaxValidateCantParseError',objText.responseText)});return null;}
if(!objResponse.success){self.ajaxError=typeof(objResponse.generalError)!='string'||objResponse.generalError.length==0?self.getMessage('ajaxValidateValidationError'):objResponse.generalError;}else{self.ajaxError=null;}
self.validate();},onError:function(objError){var strError='';if(objError.errorCode){strError+=objError.errorCode+' ';}
strError+=objError.errorDescription;self.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME+" zpNotFetching";alert(strError);self.ajaxError=null;if(self.config.formConfig.ajaxDebugFunc){self.config.formConfig.ajaxDebugFunc(self.getMessage('ajaxDebugResponseError',strError));}}});};Zapatec.Form.Field.prototype.ajaxFill=function(){if(!this.hasFeature("zpFormFillUrl")){return null;}
var submitUrl=this.getFeature("zpFormFillUrl");var submitMethod=this.getFeature("zpFormFillMethod");var submitParam=this.getFeature("zpFormFillParam");var submitQuery=this.getFeature("zpFormFillQuery");if(typeof(submitMethod)!='string'){submitMethod="GET";}
if(typeof(submitParam)!='string'){submitParam=this.field.name;}
if(typeof(submitQuery)!='string'){submitQuery="";}
submitQuery+="&"+escape(submitParam)+"="+escape(this.getValue());if(submitUrl.indexOf("?")<0){submitUrl+="?";}
submitUrl+="&"+Math.random();if(submitMethod=='GET'){submitUrl+="&"+submitQuery;}
this.fetchingMark.className="zpIsFetching "+Zapatec.Form.IGNORE_CLASSNAME;var self=this;if(this.config.formConfig.ajaxDebugFunc){this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugSeparator'));this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugFillTitle',this.field.name));this.config.formConfig.ajaxDebugFunc(submitMethod+" "+submitUrl);this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugQuery',("GET"?"":submitQuery)));}
Zapatec.Transport.fetch({url:submitUrl,content:submitMethod=="GET"?null:submitQuery,method:submitMethod,onLoad:function(objText){if(self.config.formConfig.ajaxDebugFunc){self.config.formConfig.ajaxDebugFunc(self.getMessage('ajaxDebugResponse',objText.responseText));}
self.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME+" zpNotFetching";if(objText.responseText==null){Zapatec.Log({description:self.getMessage('ajaxFillNoResponseError',objText.responseText)});return null;}
var objResponse=Zapatec.Transport.parseJson({strJson:objText.responseText});if(objResponse==null){Zapatec.Log({description:self.getMessage('ajaxFillCantParseError',objText.responseText)});return null;}
if(!objResponse.success){self.ajaxError=typeof(objResponse.generalError)!='string'||objResponse.generalError.length==0?self.getMessage('ajaxFillGeneralError'):objResponse.generalError;}else{self.ajaxError=null;var formObject=self.form;var fillData=objResponse.fillData;if(fillData.length==0){return null;}else{var fields=fillData[0];for(var ii=0;ii<fields.length;ii++){var field=formObject.container.elements[fields[ii]['fieldName']];if(!field){continue;}
Zapatec.Form.Utils.setValue(field,fields[ii]['fieldValue']);if(field.zpFormField){field.zpFormField.setValueFromField(true);}}}}
self.validate();},onError:function(objError){var strError='';if(objError.errorCode){strError+=objError.errorCode+' ';}
strError+=objError.errorDescription;self.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME+" zpNotFetching";alert(strError);self.ajaxError=null;if(self.config.formConfig.ajaxDebugFunc){self.config.formConfig.ajaxDebugFunc(self.getMessage('ajaxDebugResponseError',strError));}}});};Zapatec.Form.Field.prototype.suggestValue=function(showAll){if(!this.hasFeature("zpFormSuggest")||!showAll&&this.isEmpty()){return null;}
var suggestUrl=this.getFeature("zpFormSuggest");var suggestMethod=this.getFeature("zpFormSuggestMethod");var suggestParam=this.getFeature("zpFormSuggestParam");var suggestQuery=this.getFeature("zpFormSuggestQuery");if(typeof(suggestMethod)!='string'){suggestMethod="GET";}
if(typeof(suggestParam)!='string'){suggestParam=this.field.name;}
if(typeof(suggestQuery)!='string'){suggestQuery="";}
suggestQuery+="&"+escape(suggestParam)+"="+(showAll?"":escape(this.getValue()));if(suggestUrl.indexOf("?")<0){suggestUrl+="?";}
suggestUrl+="&"+Math.random();if(suggestMethod=='GET'){suggestUrl+="&"+suggestQuery;}
this.fetchingMark.className="zpIsFetching "+Zapatec.Form.IGNORE_CLASSNAME;var self=this;if(this.config.formConfig.ajaxDebugFunc){this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugSeparator'));this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugSuggestTitle',this.field.name));this.config.formConfig.ajaxDebugFunc(suggestMethod+" "+suggestUrl);this.config.formConfig.ajaxDebugFunc(this.getMessage('ajaxDebugQuery',("GET"?"":suggestQuery)));}
Zapatec.Transport.fetch({url:suggestUrl,content:suggestMethod=="GET"?null:suggestQuery,method:suggestMethod,onLoad:function(objText){if(self.config.formConfig.ajaxDebugFunc){self.config.formConfig.ajaxDebugFunc(self.getMessage('ajaxDebugResponse',objText.responseText));}
self.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME+" zpNotFetching";if(objText.responseText==null){Zapatec.Log({description:self.getMessage('ajaxSuggestNoResponseError',objText.responseText)});return null;}
var objResponse=Zapatec.Transport.parseJson({strJson:objText.responseText});if(objResponse==null){Zapatec.Log({description:self.getMessage('ajaxSuggestCantParseError',objText.responseText)});return null;}
if(!objResponse.success){alert(typeof(objResponse.generalError)!='string'||objResponse.generalError.length==0?self.getMessage('ajaxSuggestGeneralError'):objResponse.generalError);}else{self.autoCompleteValue(objResponse);}
self.validate();},onError:function(objError){var strError='';if(objError.errorCode){strError+=objError.errorCode+' ';}
strError+=objError.errorDescription;self.fetchingMark.className=Zapatec.Form.IGNORE_CLASSNAME+" zpNotFetching";Zapatec.Log({description:strError});if(self.config.formConfig.ajaxDebugFunc){self.config.formConfig.ajaxDebugFunc(self.getMessage('ajaxDebugResponseError',strError));}}});};Zapatec.Form.Field.prototype.getAutoCompleteOptions=function(showAll){var opts={body:[]};var currVal=this.getValue();if(this.hasFeature("zpFormAutoComplete")||this.hasFeature("zpFormAutoCompleteStrict")){for(var ii=0;ii<this.autoCompleteOptions.length;ii++){if((this.hasFeature("zpFormAutoCompleteStrict")?this.autoCompleteOptions[ii].substring(0,currVal.length):this.autoCompleteOptions[ii].substring(0,currVal.length).toLowerCase())==(this.hasFeature("zpFormAutoCompleteStrict")?currVal:currVal.toLowerCase())||showAll){opts.body.push([this.autoCompleteOptions[ii]]);}}}
return opts;};Zapatec.Form.Field.prototype.autoCompleteValue=function(opts){if(typeof(opts)=='undefined'||opts.body==null||opts.body.length==0||(opts.body.length==1&&opts.body[0][0]=="")){if(this.dropDown){this.dropDown.config.source={tips:[]};this.dropDown.loadData();this.dropDown.hide();}
return;}
var currValue=this.getValue();var retrValue=null;var firstValue=opts.body[0][0];if(firstValue.substring(0,currValue.length).toLowerCase()==currValue.toLowerCase()){retrValue=firstValue.substring(currValue.length);this.setValue(currValue+retrValue);this.setCaretPosition(currValue.length,this.getValue().length);}
this.validate();if(this.dropDown){if(opts.body.length==1){this.dropDown.config.source={tips:[]};this.dropDown.loadData();this.dropDown.hide();}else{this.dropDown.config.sourceType="json";var tips=[];for(var ii=0;ii<opts.body.length;ii++){var option=opts.body[ii];var tmp={};tmp.title=option.join(" ");tips.push(tmp);}
this.dropDown.config.source={tips:tips};this.dropDown.loadData();this.dropDown.show();}}};Zapatec.Form.Field.prototype.isSelectionAppliable=function(){var nodeName=this.field.nodeName.toLowerCase();var inputType=nodeName=='input'?this.field.type.toLowerCase():null;return(nodeName=="body"||nodeName=="button"||nodeName==="textarea"||nodeName=="input"&&(inputType=="button"||inputType=="hidden"||inputType=="password"||inputType=="reset"||inputType=="submit"||inputType=="text"))};Zapatec.Form.Field.prototype.destroy=function(){this.discard();};Zapatec.Form.dataTypes={};Zapatec.Form.Validator=[];Zapatec.Form.Validator.addDataType=function(zpName,name,regex,error,help,func){Zapatec.Form.dataTypes[zpName]={zpName:zpName,name:name,regex:regex,error:error,help:help,func:func};};Zapatec.Form.addDataType=Zapatec.Form.Validator.addDataType;Zapatec.Form.Validator.isDomainValid=function(domain){if(typeof(domain)!='string'){return false;}
for(i=0;i<domain.length;i++){if(domain.charCodeAt(i)>127){return false;}}
var ipDigit="(0?0?\\d|[01]?\\d\\d|2[0-4]\\d|25[0-6])";var ipRE=new RegExp("^"+ipDigit+"\\."+ipDigit+"\\."+ipDigit+"\\."+ipDigit+"$");if(ipRE.test(domain)){return true;}
var domains=domain.split(".");if(domains.length<2){return false;}
for(i=0;i<domains.length-1;i++){if(!(/^[a-zA-Z0-9\-]+$/).test(domains[i])){return false;}}
if(domains[domains.length-2].length<2){return false;}
if(!(/^[a-zA-Z]{2,}$/).test(domains[domains.length-1])){return false;}
return true;};Zapatec.Form.Validator.isUrlValid=function(url){if(typeof(url)!='string'){return false;}
var domain=url;var protocolSeparatorPos=url.indexOf("://");var domainSeparatorPos=url.indexOf("/",protocolSeparatorPos+3);if(protocolSeparatorPos==0){return false;}
domain=url.substring((protocolSeparatorPos>0?protocolSeparatorPos+3:0),(domainSeparatorPos>0?domainSeparatorPos:url.length));var portSeparatorPos=domain.indexOf(":");if(portSeparatorPos>0){var port=domain.substring(portSeparatorPos+1);if(!port.match(/\d+/)){return false;}
domain=domain.substring(0,portSeparatorPos);}
return Zapatec.Form.Validator.isDomainValid(domain);};Zapatec.Form.Validator.isEmailValid=function(email){if(email==null){return false;}
var atPos=email.indexOf("@");if(atPos<1||email.indexOf(".",atPos)==-1){return false;}
var login=email.substring(0,atPos);var domain=email.substring(atPos+1,email.length);var atom="\[^\\s\\(\\)><@,;:\\\\\\\"\\.\\[\\]\]+";var word="("+atom+"|(\"[^\"]*\"))";var loginRE=new RegExp("^"+word+"(\\."+word+")*$");for(i=0;i<login.length;i++){if(login.charCodeAt(i)>127){return false;}}
if(!login.match(loginRE)){return false;}
return Zapatec.Form.Validator.isDomainValid(domain);};Zapatec.Form.Validator.isCreditCardValid=function(cardNumber){if(cardNumber==null){return false;}
var cardDigits=cardNumber.replace(/\D/g,"");var parity=cardDigits.length%2;var sum=0;for(var ii=0;ii<cardDigits.length;ii++){var digit=cardDigits.charAt(ii);if(ii%2==parity)
digit=digit*2;if(digit>9)
digit=digit-9;sum+=parseInt(digit);}
return((sum!=0)&&(sum%10==0));};Zapatec.Form.Validator.isDateValid=function(str,fmt){if(fmt==null||fmt==""){fmt="%m/%d/%y";}
var separator=" ";var nums=fmt.split(separator);if(nums.length<3){separator="/";nums=fmt.split(separator);if(nums.length<3){separator=".";nums=fmt.split(separator);if(nums.length<3){separator="-";nums=fmt.split(separator);if(nums.length<3){separator=null;}}}}
if(separator==null){return false;}
var y=null;var m=null;var d=null;var a=str.split(separator);if(a.length!=3){return false;}
var b=fmt.match(/%./g);var nlDays=[31,28,31,30,31,30,31,31,30,31,30,31];var lDays=[31,29,31,30,31,30,31,31,30,31,30,31];for(var i=0;i<a.length;++i){if(!a[i])
continue;switch(b[i]){case"%d":case"%e":d=parseInt(a[i],10);if(d<=0||d>31)
d=-1;break;case"%m":m=parseInt(a[i],10)-1;if(m>11||m<0)
m=-1;break;case"%Y":case"%y":y=parseInt(a[i],10);(y<100)&&(y+=(y>29)?1900:2000);break;}}
if(y==null||m==null||d==null||isNaN(y)||isNaN(m)||isNaN(d)){return false;}
if(m!=-1){if((y%4)==0){if((y%100)==0&&(y%400)!=0){if(d>nlDays[m]){d=-1;}}
if(d>lDays[m]){d=-1;}}else{if(d>nlDays[m]){d=-1;}}}
if(y!=0&&m!=-1&&d!=-1){return true;}
return false;};Zapatec.Form.Validator.hasMinLength=function(str,length){return(str+"").length>=parseInt(length);}
Zapatec.Form.Validator.hasMaxLength=function(str,length){return(str+"").length<=parseInt(length);}
Zapatec.Form.Validator.addDataType('zpFormUrl','A URL -- web address',null,'invalidURLError',"Valid URL needs to be in the form http://www.yahoo.com:80/http://www.cpifoam.com/index.aspx or just www.yahoo.com",Zapatec.Form.Validator.isUrlValid);Zapatec.Form.Validator.addDataType('zpFormEmail','An Email Address',null,'invalidEmailError',"Valid email address need to be in the form of nobody@example.com",Zapatec.Form.Validator.isEmailValid);Zapatec.Form.Validator.addDataType('zpFormCreditCard','Credit card number',null,'invalidCreditCardError',"Please enter valid credit card number",Zapatec.Form.Validator.isCreditCardValid);Zapatec.Form.Validator.addDataType('zpFormUSPhone','A USA Phone Number',/^((\([1-9][0-9]{2}\) *)|([1-9][0-9]{2}[\-. ]?))(\d[ -]?){6}\d *(ex[t]? *[0-9]+)?$/,'invalidUSPhoneError',"Valid US Phone number needs to be in the form of 'xxx xxx-xxxx' For instance 312 123-1234. An extention can be added as ext xxxx. For instance 312 123-1234 ext 1234",null);Zapatec.Form.Validator.addDataType('zpFormInternationalPhone','An international Phone Number',/^\+\d{1,3}[ -]\d{2,3}[ -](\d[ -]?){6}\d *(ex[t]? *[0-9]+)?$/,'invalidInternationalPhoneError',"Valid internation phone number needs to be in the form of '+x xxx xxx-xxxx' For instance +1 234 567-9012. An extention can be added as ext xxxx. For instance +1 234 567-9012 ext 1234",null);Zapatec.Form.Validator.addDataType('zpFormUSZip','A USA Zip Number',/(^\d{5}$)|(^\d{5}-\d{4}$)/,'invalidUSZipError',"Valid US Zip number needs to be either in the form of '99999', for instance 94132 or '99999-9999' for instance 94132-3213",null);Zapatec.Form.Validator.addDataType('zpFormDate','A Valid Date',null,'invalidDateError',"Please enter a valid date",Zapatec.Form.Validator.isDateValid);Zapatec.Form.Validator.addDataType('zpFormInt','An Integer',null,'invalidIntError',"Please enter an integer",function(number){return/^\d+$/.test(number);});Zapatec.Form.Validator.addDataType('zpFormFloat','A Floating Point Number',null,'invalidFloatError',"Please enter a Floating Point Number",function(number){var parsed=parseFloat(number);return(parsed==number);});Zapatec.Form.Validator.addDataType('zpFormMinLength','Min length',null,'minLengthError',"Value is too short",Zapatec.Form.Validator.hasMinLength);Zapatec.Form.Validator.addDataType('zpFormMaxLength','Max length',null,'maxLengthError',"Value is too long",Zapatec.Form.Validator.hasMaxLength);Zapatec.Form.Utils=[];Zapatec.Form.Utils.getTokens=function(className,separator){if(typeof(separator)!='string'||separator.length==0){separator=" ";}
var arr={};if(className!=null&&className.length>0){var isInQuotes=false;var quoteChar=null;var key="";var value="";var isInValue=false;for(var ii=0;ii<className.length;ii++){var currChar=className.charAt(ii);if(currChar=="\\"){ii++;currChar=className.charAt(ii);}else if(!isInValue&&currChar=="="){isInValue=true;var nextChar=className.charAt(ii+1);if(nextChar=="'"||nextChar=='"'){quoteChar=nextChar;ii++;}
continue;}else if(currChar==" "){if(key.length==0){continue;}
if(quoteChar!=null){if(quoteChar==value.charAt(value.length-1)){quoteChar=null;value=value.substr(0,value.length-1);}else{value=quoteChar+value;}}
arr[key]=value.length==0?null:value;isInValue=false;key="";value="";quoteChar=null;continue;}
if(ii<className.length){if(isInValue){value+=currChar;}else{key+=currChar;}}}
if(key.length>0){if(quoteChar!=null){if(quoteChar==value.charAt(value.length-1)){quoteChar=null;value=value.substr(0,value.length-1);}else{value=quoteChar+value;}}
arr[key]=(value.length==0?null:value);}}
return arr;};Zapatec.Form.Utils.toggleFormElements=function(field,show,useVisibility){field=Zapatec.Widget.getElementById(field);if(field==null){return null;}
var inputs=Zapatec.Form.Utils.getFormElements(field);for(var ii=0;ii<inputs.length;ii++){var input=inputs[ii];if(show){if(typeof(input.zpOrigDisabled)!='undefined'){input.disabled=input.zpOrigDisabled;var undef;input.zpOrigDisabled=undef;}}else{if(typeof(input.zpOrigDisabled)=='undefined'){input.zpOrigDisabled=input.getAttribute("disabled");input.disabled=true;}}
if(show&&input.zpFormField!=null){input.zpFormField.validate();}}
if(useVisibility){field.style.visibility=(show?'visible':'hidden');}else{field.style.display=(show?'':'none');}};Zapatec.Form.Utils.getFormElements=function(el){el=Zapatec.Widget.getElementById(el);if(el==null){return null;}
var inputs=[];var children=el.all?el.all:el.getElementsByTagName("*");for(var ii=0;ii<children.length;ii++){if(Zapatec.Form.Utils.isInputField(children[ii])){inputs.push(children[ii]);}}
return inputs;};Zapatec.Form.Utils.getValue=function(element){element=Zapatec.Widget.getElementById(element);if(element==null||typeof(element.tagName)=='undefined'){return null;}
switch(element.tagName.toLowerCase()){case"select":if(element.selectedIndex<0){return"";}
var option=element.options[element.selectedIndex];if(option!=null){return option.value;}else{return"";}
case"input":return element.value;case"textarea":return element.value;}
return null;};Zapatec.Form.Utils.setValue=function(element,value){element=Zapatec.Widget.getElementById(element);if(element==null||typeof(element.tagName)=='undefined'){return null;}
switch(element.tagName.toLowerCase()){case"input":if(element.type.toLowerCase()!="file"){element.value=value;}
break;case"textarea":element.value=value;break;case"select":for(var i=0;i<element.options.length;i++){if(element.options[i].value==value){element.selectedIndex=i;break;}}}
return value;};Zapatec.Form.Utils.isInputField=function(el){if(el.nodeType!=1){return false;}
var nodeName=el.nodeName.toLowerCase();return(nodeName=='input'||nodeName=='textarea'||nodeName=='select');};Zapatec.Form.Utils.ignoreField=function(field){field=Zapatec.Widget.getElementById(field);if(!field||field.nodeType!=1||(field.className&&/\bzpIgnoreField\b/.test(field.className))||!Zapatec.Form.Utils.isInputField(field)||(field.nodeType==1&&field.nodeName.toLowerCase()=='fieldset')){return true;}
var type=field.type.toLowerCase();var ignoreList=['submit','reset','button'];for(var ii=0;ii<ignoreList.length;ii++){if(type.toLowerCase()==ignoreList[ii]){return true;}}
return false;};Zapatec.Form.Utils.isSpecialKey=function(charCode,newChar){return((newChar==null&&charCode!=8&&charCode!=46)||charCode==9||charCode==13||charCode==16||charCode==17||charCode==18||charCode==20||charCode==27||charCode==33||charCode==34||charCode==35||charCode==36||charCode==37||charCode==38||charCode==39||charCode==40||charCode==45||charCode==144||charCode>256);};Zapatec.Form.Utils.initMultipleField=function(currEl,firstRun,form){var md=null;if(!currEl||!currEl.className||!(md=currEl.className.match(/zpFormMultiple(Inside|Outside)?/))||currEl.zpRelatedElements!=null){return null;}
var outside=true;if(md[1]=="Inside"||currEl.nodeName.toLowerCase()=="td"||currEl.nodeName.toLowerCase()=="th"||currEl.nodeName.toLowerCase()=="tr"){outside=false;}
if(currEl.nodeName.toLowerCase()=="input"||currEl.nodeName.toLowerCase()=="textarea"||currEl.nodeName.toLowerCase()=="select"||currEl.nodeName.toLowerCase()=="image"){outside=true;}
var appendEl=currEl;if(currEl.nodeName.toLowerCase()=="tr"){function findParentTable(el){if(el.parentNode!=null&&el.parentNode.nodeType==1&&el.parentNode.tagName.toLowerCase()!="table"){return findParentTable(el.parentNode);}
return el.parentNode;}
var table=findParentTable(currEl);for(var jj=table.rows.length-1;jj>=0;jj--){var td=document.createElement('td');td.className=Zapatec.Form.IGNORE_CLASSNAME;td.innerHTML="&nbsp;";if(jj==currEl.rowIndex||table.rows[jj]==currEl){appendEl=td;}
if(firstRun||jj==currEl.rowIndex){table.rows[jj].appendChild(td);}}}
var button=Zapatec.Utils.createElement('input');button.type="button";button.className=Zapatec.Form.IGNORE_CLASSNAME+" multipleButton";Zapatec.Utils.createProperty(button,"zpMultipleElement",currEl);if(currEl.zpOriginalNode==null){Zapatec.Utils.createProperty(currEl,"zpMultipleChildren",[]);Zapatec.Utils.createProperty(currEl,"zpMultipleChilds",[]);button.value="+";button.onclick=function(){if(!this.disabled){Zapatec.Form.Utils.cloneElement(currEl,form);}}}else{button.value="-";var parent=currEl.zpOriginalNode;parent.zpMultipleChilds.push(currEl);parent.zpMultipleChildren.push(currEl);button.onclick=function(){if(!this.disabled){Zapatec.Form.Utils.removeClonedElement(currEl,form);}}}
if(outside){Zapatec.Utils.insertAfter(appendEl,button);}else{appendEl.appendChild(button);}
Zapatec.Utils.createProperty(currEl,"zpRelatedElements",[button,currEl]);Zapatec.Utils.createProperty(currEl,"zpMultipleButton",button);var tokens=Zapatec.Form.Utils.getTokens(currEl.className);if(typeof(tokens['zpFormMultipleLimit'])!='undefined'&&!isNaN(parseInt(tokens['zpFormMultipleLimit']))){Zapatec.Utils.createProperty(currEl,"zpFormMultipleLimit",parseInt(tokens['zpFormMultipleLimit'])-2);if(isNaN(currEl.zpFormMultipleLimit)){currEl.zpFormMultipleLimit=-1;}}else{Zapatec.Utils.createProperty(currEl,"zpFormMultipleLimit",-1);}
if(currEl.zpFormField!=null){currEl.zpRelatedElements=[currEl.zpFormField.statusImg1,currEl.zpFormField.statusImg2,currEl.zpFormField.statusImg3,currEl.zpFormField.statusImg4,currEl.zpFormField.statusImg,currEl.zpFormField.errorText].concat(currEl.zpRelatedElements);}else{Zapatec.Utils.createProperty(currEl,"zpLastNode",(outside?button:currEl));}};Zapatec.Form.Utils.cloneElement=function(field,form){if(field.zpFormMultipleLimit>=0&&field.zpMultipleChildren!=null&&field.zpMultipleChildren.length>field.zpFormMultipleLimit){return false;}
var insertAfterNode=field.zpLastNode;if(field.zpMultipleChildren!=null&&field.zpMultipleChildren.length>0){insertAfterNode=field.zpMultipleChildren[field.zpMultipleChildren.length-1].zpLastNode;}
var clone=field.cloneNode(true);Zapatec.Utils.createProperty(clone,"zpOriginalNode",field);Zapatec.Utils.insertAfter(insertAfterNode,clone);var childElements=[clone];var tmpArr=clone.all?clone.all:clone.getElementsByTagName("*");for(var ii=0;ii<tmpArr.length;ii++){childElements.push(tmpArr[ii]);}
for(var ii=0;ii<childElements.length;ii++){var currEl=childElements[ii];if(currEl.className.indexOf(Zapatec.Form.IGNORE_CLASSNAME)>=0){Zapatec.Utils.destroy(currEl);continue;}
if(Zapatec.Form.Utils.isInputField(currEl)){Zapatec.Form.Utils.setValue(currEl,"");if(currEl.form&&currEl.form.zpForm){var zpForm=currEl.form.zpForm;currEl.zpFormField=null;new Zapatec.Form.Field({form:zpForm,field:currEl,langId:zpForm.config.langId,lang:zpForm.config.lang,langCountryCode:zpForm.config.langCountryCode,langEncoding:zpForm.config.langEncoding,formConfig:(zpForm?zpForm.config:{})});}}
currEl.zpMultipleElement=null;currEl.zpMultipleChilds=null;currEl.zpMultipleChildren=null;currEl.zpRelatedElements=null;currEl.zpMultipleButton=null;currEl.zpFormMultipleLimit=null;Zapatec.Form.Utils.initMultipleField(currEl,false,form);if(form&&typeof(form.config.multipleCallback)=='function'){form.config.multipleCallback(field,clone,currEl,field.zpMultipleChildren);}}
if(field.zpFormMultipleLimit>=0&&field.zpMultipleChildren!=null&&field.zpMultipleChildren.length>field.zpFormMultipleLimit){field.zpMultipleButton.style.visibility='hidden';field.zpMultipleButton.disabled=true;}
return clone;};Zapatec.Form.Utils.removeClonedElement=function(field,form){if(field==null||field.zpOriginalNode==null){return false;}
var children=field.zpOriginalNode.zpMultipleChildren;if(form){form.fireEvent("beforeDeleteMultiple",field,field.zpOriginalNode);}
for(var ii=0;ii<children.length;ii++){if(children[ii]==field){var original=field.zpOriginalNode;original.zpMultipleChilds=children.slice(0,ii).concat(children.slice(ii+1));original.zpMultipleChildren=children.slice(0,ii).concat(children.slice(ii+1));if(original.zpFormMultipleLimit>=0&&original.zpMultipleChildren.length<=original.zpFormMultipleLimit){original.zpMultipleButton.style.visibility='visible';original.zpMultipleButton.disabled=false;}
break;}}
if(field.zpRelatedElements!=null&&field.zpRelatedElements.length>0){for(var ii=0;ii<field.zpRelatedElements.length;ii++){if(typeof(field.zpRelatedElements[ii])!='undefined'&&field.zpRelatedElements[ii]!=null){Zapatec.Utils.destroy(field.zpRelatedElements[ii]);}}}};Zapatec.Form.Utils.generateMultipleId=function(original,cloneParent,cloned,children){if(!cloneParent.zpIsCloned){cloneParent.zpIsCloned=true;}
if(typeof(cloned.id)!='undefined'&&cloned.id!=null&&cloned.id!=""){cloned.id+="-"+original.zpMultipleChildren.length;}
if(typeof(cloned.name)!='undefined'&&cloned.name!=null&&cloned.name!=""){cloned.name+="-"+original.zpMultipleChildren.length;}};Zapatec.Form.Utils.beforeDeleteMultiple=function(el,original){if(!el||!original||!original.zpMultipleChildren){return;}
var cc=1;for(var ii=0;ii<original.zpMultipleChildren.length;ii++){var node=original.zpMultipleChildren[ii];if(node===el){continue;}
var childElements=[node];var tmpArr=node.all?node.all:node.getElementsByTagName("*");for(var jj=0;jj<tmpArr.length;jj++){childElements.push(tmpArr[jj]);}
for(var jj=0;jj<childElements.length;jj++){var currEl=childElements[jj];if(currEl.id){currEl.id=currEl.id.replace(/-\d+$/,"-"+cc);}
if(currEl.name){currEl.name=currEl.name.replace(/-\d+$/,"-"+cc);}}
cc++;}}
Zapatec.Utils.addEvent(window, 'load', Zapatec.Utils.checkActivation);


function testErrOutput(objErrors) {
    var message = objErrors.generalError + '<br />';

    if (objErrors.fieldErrors) {
        for (var ii = 0; ii < objErrors.fieldErrors.length; ii++)
            message += (ii + 1) + ': Field "' + objErrors.fieldErrors[ii].field.name + '" ' + objErrors.fieldErrors[ii].errorMessage + "<br />";
    }

    var outputDiv = document.getElementById("errOutput");

    if (outputDiv != null) {
        outputDiv.innerHTML = message;
        outputDiv.style.display = "block";
    }
}

function myOnSuccess() {
    var outputDiv = document.getElementById("errOutput");

    if (outputDiv != null) {
        outputDiv.innerHTML = ''; //clear error message if any
        outputDiv.style.display = "none";
    }

    alert('Success!');
};

function myDebug(message) {
    var debugContainer = document.getElementById("debugContainer");

    if (debugContainer == null) {
        debugContainer = document.createElement("div");
        debugContainer.id = "debugContainer";
        var st = debugContainer.style;
        st.position = "absolute";
        st.top = "0";
        st.right = "0";
        st.width = "500px";
        st.height = "100px";
        st.overflow = "scroll";
        st.backgroundColor = "#EEEEEE";
        st.fontSize = "small";
        document.body.appendChild(debugContainer);
        Zapatec.ScrollWithWindow.register(debugContainer);
    }

    debugContainer.innerHTML += message.replace(/&/g, '&amp;').replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/\n/g, "<br />") + "<br />";
}

function checkIfLoadedFromHDD() {
    if (document.location.toString().indexOf('http') != 0) {
        alert('Since this example demonstrates interaction between server and javascript application, it must be loaded from server. This example does not work if opened from local hard drive.');
    }
}
