﻿
var gXmlRefs = []; // Alla URLar till öpppnade xml-filer
var gXmlDocs = []; // Alla öppnade XML-filer
var gMittUrl = "";
var gBaseUrl = "";
var gGalleryHtml = "";
var gDogindexHtml = "";
var gLitterindexHtml = "";
//======================================================================
function GetBaseUrl() {
    //iBase = 'http://www.pixelnatura.com/creamtoffees/';
    //iBase = 'file:///M:/Creamtoffees/Creamtoffees/';
    if (typeof (window.parent.frames[0].document.gBaseUrl) == "undefined") {
        var topHref = window.parent.frames[0].location.href;
        window.parent.frames[0].document.gBaseUrl = topHref.substr(0, topHref.lastIndexOf("/") + 1);
    }
    return window.parent.frames[0].document.gBaseUrl;
}
//======================================================================
function makeDoubleDelegate(function1, function2) {
    return function() {
        if (function1)
            function1();
        if (function2)
            function2();
    }
}
//======================================================================
window.onload = makeDoubleDelegate(window.onload, myNewFunction);
function myNewFunction() {
    //alert('window.onload');
    //alert('document.title = ' + document.title);
    var xmlDoc;
    
    try {
        var xmlref = getValue("xmlref");
    } catch (e) {
        xmlref = "../kennel.xml"; //Default när variabler saknas efter URLen.
    }
    if (document.title == "Creamtoffees Golden Retriverkennel") { // = Index.htm
        //alert('index.htm - href = ' + window.location.href);
        try {
            //alert("mitturl = " + getValue("mitturl"));
            //window.parent.frames[0].gMittUrl = getValue("mitturl");
            //alert('window.frames[0].gMittUrl = '+window.frames[0].gMittUrl);
            //window.frames[2].src = "putte.htm"; //  window.frames[0].gMittUrl;  //unescape(getValue("mitturl"));
            //alert('XX');
            //alert("mitturlB " + window.parent.frames[2].src);
            //alert("search = " + getValue("search"));
        } catch (e) {
            window.frames[0].gMittUrl = "";
        }
    } else if (document.title == "Mitt") { // = Mitt.htm
        //alert('Mitt href = ' + window.location.href);
        //alert('X = '+window.parent.frames[0].gMittUrl);
        try {
            var wantedUrl = unescape(getValue2("mitturl", window.parent.location.href));
            //window.parent.frames[0].gMittUrl = wantedUrl;
            //alert('Y = ' + window.parent.frames[0].gMittUrl);
            window.location.href = wantedUrl;
        } catch (e) {
            xmlref = "kennel.xml"; //Default när variabler saknas efter URLen.
            xmlDoc = OpenXML(xmlref);
            UpdateMittPane(xmlDoc);
        }

    } else if (document.title == "Hundar") { // = Hundar/Index.htm
        if (window.parent.frames.length == 0) {
            window.location.href = "../Index.htm?mitturl=" + escape("Hundar/Index.htm?xmlref=../kennel.xml");
        }
        try {
            //alert('Beep = ' + window.parent.location.href);
            if (getValue2("mitturl", window.parent.location.href) != "") {
                //alert('Beep = ' + window.parent.location.href);
                //****window.parent.location.href = "";  //"Index.htm";
            }
        } catch (e) { 
        }
        xmlDoc = OpenXML(xmlref);
        BuildDogindexHtml(xmlDoc, document.getElementById('insertpoint'));

    } else if (document.title == "Hund") { // = Hundar/Hund.htm
        if (window.parent.frames.length == 0) window.location.replace("../Index.htm");
        var Id = getValue("Id");
        var ShowAngel = getValue("ShowAngel")
        if (ShowAngel.toUpperCase() == "TRUE") {
            var iShowAngel = true;
        } else {
            iShowAngel = false;
        }
        xmlDoc = OpenXML(xmlref);
        BuildDogHtml(xmlDoc, Id, document.getElementById('insertpoint'), iShowAngel);

    } else if (document.title == "Angel") { // = Minnen/Angel.htm
        var Id = getValue("Id");
        xmlDoc = OpenXML(xmlref);
        BuildAngelHtml(xmlDoc, Id, document.getElementById('insertpoint'));

    } else if (document.title == "Angeldogs") { // = Minnen/Index.htm
        xmlDoc = OpenXML(xmlref);
        BuildAngelindexHtml(xmlDoc, document.getElementById('insertpoint'));

    } else if (document.title == "Galleri") { // = Galleri/Index.htm
        xmlDoc = OpenXML(xmlref);
        BuildGalleriindexHtml(xmlDoc, document.getElementById('insertpoint'));

    } else if (document.title == "Valpkullar") { // = Valpar/Index.htm
        if (window.parent.frames.length == 0) {
            window.location.href = "../Index.htm?mitturl=" + escape("Valpar/Index.htm?xmlref=../kennel.xml");
        }
        xmlDoc = OpenXML(xmlref);
        BuildLitterindexHtml(xmlDoc, document.getElementById('insertpoint'));

    } else if (document.title == "Kull") { // = Valpar/Kull.htm
        if (window.parent.frames.length == 0) window.location.replace("../Index.htm");
        var litterId = getValue("litterId");
        xmlDoc = OpenXML(xmlref);
        BuildLitterHtml(xmlDoc, litterId, document.getElementById('insertpoint'));

    } else if (document.title == "Kontakt") { // = Contact/Index.htm
        if (window.parent.frames.length == 0) {
            window.location.href = "../Index.htm?mitturl=" + escape("Contact/Index.htm?xmlref=../kennel.xml");
        }
        xmlDoc = OpenXML(xmlref);
        GetContactInfo(xmlDoc);

    } else if (document.title == "Left") { // = Left.htm
        xmlref = "kennel.xml"; //Default när variabler saknas efter URLen.
        xmlDoc = OpenXML(xmlref);
        UpdateLeftPane(xmlDoc);
    }
    
}
// 
//======================================================================
function getValue(varname) {
    // http://www.tek-tips.com/faqs.cfm?fid=5442

    // First, we load the URL into a variable
    var url = window.location.href;

    // Next, split the url by the ?
    var qparts = url.split("?");

    // Check that there is a querystring, return "" if not
    if (qparts.length == 0) {
        return "";
    }

    // Then find the querystring, everything after the ?
    var query = qparts[1];

    // Split the query string into variables (separates by &s)
    var vars = query.split("&");

    // Initialize the value with "" as default
    var value = "";

    // Iterate through vars, checking each one for varname
    for (i = 0; i < vars.length; i++) {
        // Split the variable by =, which splits name and value
        var parts = vars[i].split("=");

        // Check if the correct variable
        if (parts[0] == varname) {
            // Load value into variable
            value = parts[1];

            // End the loop
            break;
        }
    }

    // Convert escape code
    value = unescape(value);

    // Convert "+"s to " "s
    value.replace(/\+/g, " ");

    // Return the value
    return value;
}

function getValue2(varname, url) {
    // http://www.tek-tips.com/faqs.cfm?fid=5442

    // Next, split the url by the ?
    var qparts = url.split("?");

    // Check that there is a querystring, return "" if not
    if (qparts.length == 0) {
        return "";
    }

    // Then find the querystring, everything after the ?
    var query = qparts[1];

    // Split the query string into variables (separates by &s)
    var vars = query.split("&");

    // Initialize the value with "" as default
    var value = "";

    // Iterate through vars, checking each one for varname
    for (i = 0; i < vars.length; i++) {
        // Split the variable by =, which splits name and value
        var parts = vars[i].split("=");

        // Check if the correct variable
        if (parts[0] == varname) {
            // Load value into variable
            value = parts[1];

            // End the loop
            break;
        }
    }

    // Convert escape code
    value = unescape(value);

    // Convert "+"s to " "s
    value.replace(/\+/g, " ");

    // Return the value
    return value;
}
//======================================================================
function GetContactInfo(xmlDoc) {
    // Uppdatera sidan "Contact/Index.htm" med info från xml-filen.
    document.getElementById("XmlIdÄgarNamn").innerHTML = xmlDoc.documentElement.getAttribute("ägarnamn");
    document.getElementById("XmlIdTelefon").innerHTML = xmlDoc.documentElement.getAttribute("telefon");
    document.getElementById("XmlIdMobil").innerHTML = xmlDoc.documentElement.getAttribute("mobiltelefon");
    
    var iEmail = xmlDoc.documentElement.getAttribute("epost");
    document.getElementById("XmlIdMail1").href = 'mailto:' + iEmail;
    document.getElementById("XmlIdMail2").href = 'mailto:' + iEmail;
    document.getElementById("XmlIdMail2").innerHTML = iEmail;
    document.getElementById("XmlIdMail3").href = 'mailto:' + iEmail;
    
    var iAdress = xmlDoc.documentElement.getAttribute("gatuadress") + '<br/>';
    iAdress += xmlDoc.documentElement.getAttribute("postnummer") + '&nbsp;';
    iAdress += xmlDoc.documentElement.getAttribute("postort") + '<br/>';
    iAdress += xmlDoc.documentElement.getAttribute("land");
    document.getElementById("XmlIdAdress").innerHTML = iAdress;
}
//======================================================================
function UpdateLeftPane(xmlDoc) {
    // Uppdatera sidan "Left.htm" med info från xml-filen.
    var iHemsan  = xmlDoc.getElementsByTagName("hemsidan")[0];
    var iMarkering = '<img src="bilder/stars.gif" border="0" align="absmiddle" style="float:right;" />';
    var iSpan = document.getElementById("nyhetermarkering");
    if (iHemsan.getAttribute("MarkeraNyheter").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("omossmarkering");
    if (iHemsan.getAttribute("MarkeraOmOss").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("vårahundarmarkering");
    if (iHemsan.getAttribute("MarkeraVåraHundar").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("valpkullarmarkering");
    if (iHemsan.getAttribute("MarkeraValpkullar").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("händelsermarkering");
    if (iHemsan.getAttribute("MarkeraHändelser").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("gallerimarkering");
    if (iHemsan.getAttribute("MarkeraGalleri").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("länkarmarkering");
    if (iHemsan.getAttribute("MarkeraLänkar").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("kontaktmarkering");
    if (iHemsan.getAttribute("MarkeraKontakt").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }

    iSpan = document.getElementById("änglahundsmarkeringtmarkering");
    if (iHemsan.getAttribute("MarkeraÄnglahundar").toUpperCase() == 'JA') {
        iSpan.innerHTML = iMarkering;
    } else {
        iSpan.innerHTML = '';
    }
}
//======================================================================
function UpdateMittPane(xmlDoc) {
    // Uppdatera sidan "Mitt.htm" med info från xml-filen.
    var iHemsan  = xmlDoc.getElementsByTagName("hemsidan")[0];
    var iSpan = document.getElementById("SidanUppdaterades");
    //alert(iHemsan.getAttribute("SidanUppdaterades"));
    iSpan.innerHTML = iHemsan.getAttribute("SidanUppdaterades");
}
//======================================================================
function BuildLitterindexHtml(xmlDoc, isrtElem) {

    if (typeof (window.parent.frames[0].document.gLitterindexHtml) != "undefined") {
        // Use cached HTML
        isrtElem.innerHTML = window.parent.frames[0].document.gLitterindexHtml;
    } else {
        var buffer = [], j = 0;
        var iLitters = xmlDoc.getElementsByTagName("kull");
        //
        // Rubrik
        //
        buffer[j++] = BuildHeader("","Valpkullar",document.title,'../bilder/');
        buffer[j++] = '<table>';

        buffer[j++] = '    <tr>';
        buffer[j++] = '        <th class="RubGoldTDx" colspan="2">Undan/Dam</th>';
        buffer[j++] = '        <th class="RubGoldTD6" style="text-align:center;">Valpkull</th>';
        buffer[j++] = '        <th class="RubGoldTDx" colspan="2">Efter/Sire</th>';
        buffer[j++] = '    </tr>';

        for (q = 0; q < iLitters.length; q++) {
            var theLitter = iLitters[q];
            document.title = 'Valpkullar';
            //
            // Kullar
            //
            buffer[j++] = '    <tr>';

            var iHref = 'Kull.htm?xmlref=../kennel.xml&litterId=' + theLitter.getAttribute("KullId");
            buffer[j++] = '        <td class="invisible" style="border-right:none;vertical-align:middle;">' + theLitter.getAttribute("KullTikNamn") + '</td><td class="invisible" style="text-align:right;"><a href="' + iHref + '">' + HamtaHundBildSmall(theLitter,'KullTikBildSmall','KullTikBild') + '</a></td>';
            buffer[j++] = '        <td nowrap="nowrap" style="font-size:0.8em;font-weight:bold;vertical-align:middle;border:none;"><a class="anyLinkNextDark9x9" href="' + iHref + '"><img src="../bilder/NextBlack9x9.gif" border="0" align="absmiddle" />' + theLitter.getAttribute("KullNamn") + ' - ' + theLitter.getAttribute("KullFödelsedatum") + '</a></td>';
            buffer[j++] = '        <td class="invisible" style="text-align:left;"><a href="' + iHref + '">' + HamtaHundBildSmall(theLitter, 'KullHaneBildSmall', 'KullHaneBild') + '</a></td><td class="invisible" style="border-left:none;vertical-align:middle;">' + theLitter.getAttribute("KullHaneNamn") + '</td>';
            buffer[j++] = '    </tr>';
        }
        buffer[j++] = '</table>';
        
//        isrtElem.innerHTML = buffer.join("")
        window.parent.frames[0].document.gLitterindexHtml = buffer.join("");
        isrtElem.innerHTML = window.parent.frames[0].document.gLitterindexHtml;
    }

}
//======================================================================
function HamtaHundBildSmall(theNode, theAttrSmallSize, theAttrNormalSize) {
     
    if (theNode.getAttribute(theAttrSmallSize) != null) {
        if (theNode.getAttribute(theAttrSmallSize) != "") {
            return '<img class="dogprofilethumb" align="absmiddle" src="' + PrepHref(theNode.getAttribute(theAttrSmallSize)) + '" />';
        }
    }
    if (theNode.getAttribute(theAttrNormalSize) != null) {
        if (theNode.getAttribute(theAttrNormalSize) != "") {
            return '<img class="dogprofilethumb" align="absmiddle" src="' + PrepHref(theNode.getAttribute(theAttrNormalSize)) + '" />';
        }
        return '';
    }
    return '';
}
//======================================================================
function HamtaHundBild(theNode,theAttr) {
    
    if (theNode.getAttribute(theAttr) != null) {
        if (theNode.getAttribute(theAttr) != "") {
            //style="Filter: FlipH"
            return '<img class="dogprofilethumb" align="absmiddle" src="' + PrepHref(theNode.getAttribute(theAttr)) + '" />';
        }
        return '';
    }
    return '';
}

//======================================================================

function BuildLitterHtml(xmlDoc, litterId, isrtElem) {
    // XML DOM ref http://msdn.microsoft.com/en-us/library/aa925430.aspx
    var buffer = [], j = 0;
    var iLitters = xmlDoc.getElementsByTagName("kull"); //jl/2010-03-03 ("litter")
    
    for (q = 0; q < iLitters.length; q++) {
        var theLitter = iLitters[q];
        if (theLitter.getAttribute("KullId") == litterId) {
            // Process the wanted litter

            //document.title = 'Valpar (' + theLitter.getAttribute("KullNamn") + ') ' + theLitter.getAttribute("KullFödelsedatum");
            document.title = 'Valpkull ' + theLitter.getAttribute("KullId") + ' - ' + theLitter.getAttribute("KullFödelsedatum");
            //
            // Rubrik
            //
            buffer[j++] = BuildHeader("Index.htm?xmlref=../kennel.xml","Valpkullar",document.title,'../bilder/');
            //
            // Prev/ Next
            //
            buffer[j++] = '<table style="font-size:1.2em;"><tr><td class="invisible" width="50%" style="text-align:right;">';
            if (iLitters.length == 1) {
                // none
            } else if (q == 0) {
                // Next
                var nextLitter = iLitters[q+1];
                buffer[j++] = '</td><td class="invisible"><span class="RubLink2">&nbsp;|&nbsp;</span></td><td class="invisible" width="50%">';
                buffer[j++] = BuildKullLinkNext(nextLitter.getAttribute("KullId"), nextLitter.getAttribute("KullNamn"));
            } else if (q + 1 == iLitters.length) {
                // Prev 
                var prevLitter = iLitters[q-1];
                buffer[j++] = BuildKullLinkPrev(prevLitter.getAttribute("KullId"), prevLitter.getAttribute("KullNamn"));
                buffer[j++] = '</td><td class="invisible"><span class="RubLink2">&nbsp;|&nbsp;</span></td><td class="invisible" width="50%">';
                //buffer[j++] = 'LAST';
            } else {
                // Prev Next
                prevLitter = iLitters[q-1];
                nextLitter = iLitters[q+1];
                buffer[j++] = BuildKullLinkPrev(prevLitter.getAttribute("KullId"), prevLitter.getAttribute("KullNamn"));
                buffer[j++] = '</td><td class="invisible"><span class="RubLink2">&nbsp;|&nbsp;</span></td><td class="invisible" width="50%">';
                buffer[j++] = BuildKullLinkNext(nextLitter.getAttribute("KullId"), nextLitter.getAttribute("KullNamn"));
            }
            buffer[j++] = '</td></tr></table>';
            buffer[j++] = '<table><tr><td class="invisible" style="font-size:1.0em;text-align:center;">';
            //
            // Föräldrar
            //
            buffer[j++] = '<table>';
            buffer[j++] = '<tr><th class="RubGoldTD3" colspan="2" style="font-size:1.0em;">Föräldrar</th></tr>';
            buffer[j++] = '<tr><td class="RubUnderGold" style="text-align:center;">Undan/Dam</td>';
            buffer[j++] = '    <td class="RubUnderGold" style="text-align:center;">Efter/Sire</td></tr>';
            var iKullTikHundId = "";
            if (theLitter.getAttribute("KullTikHundId") != null) {
                iKullTikHundId = theLitter.getAttribute("KullTikHundId");
            } else {
                iKullTikHundId = "";
            };
            buffer[j++] = '<tr><td style="text-align:center;font-weight:bold;border-bottom:none;">' + theLitter.getAttribute("KullTikNamn") + '</td>';
            buffer[j++] = '    <td style="text-align:center;font-weight:bold;border-bottom:none;">' + theLitter.getAttribute("KullHaneNamn") + '</td>';
            buffer[j++] = '</tr>';

            if (theLitter.getAttribute("KullTikBild") != "" || theLitter.getAttribute("KullHaneBild") != "") {
                buffer[j++] = '<tr>';
                if (iKullTikHundId != "") {
                    buffer[j++] = '<td style="text-align:center;border-top:none;"><a href="../Hundar/Hund.htm?xmlref=../kennel.xml&Id=' + iKullTikHundId + '&ShowAngel=True"><img class="dogprofileimage" src="' + PrepHref(theLitter.getAttribute("KullTikBild")) + '" /></a><br><a class="anyLinkNextDark9x9" href="../Hundar/Hund.htm?xmlref=../kennel.xml&Id=' + iKullTikHundId + '&ShowAngel=True"><img src="../bilder/NextBlack9x9.gif" border="0" align="absmiddle" />' + iKullTikHundId + 's sida</a></td>';
                } else {
                buffer[j++] = '<td style="text-align:center;border-top:none;"><img  class="dogprofileimage" src="' + PrepHref(theLitter.getAttribute("KullTikBild")) + '" /></td>';
                }
                buffer[j++] = '<td style="text-align:center;border-top:none;">';
                if (theLitter.getAttribute("KullHaneBild") != null) {
                    if (theLitter.getAttribute("KullHaneBild") != "") {
                        buffer[j++] = '<img class="dogprofileimage" src="' + PrepHref(theLitter.getAttribute("KullHaneBild")) + '" />';
                    }
                }
                buffer[j++] = '</td></tr>';
            }
            if (theLitter.getAttribute("KullTikVeterinärresultat") != "" || theLitter.getAttribute("KullHaneVeterinärresultat") != "") {
                buffer[j++] = '<tr>';
                buffer[j++] = '<td>Veterinärresultat: ' + theLitter.getAttribute("KullTikVeterinärresultat") + '</td>'
                buffer[j++] = '<td>Veterinärresultat: ' + theLitter.getAttribute("KullHaneVeterinärresultat") + '</td>'
                buffer[j++] = '</tr>';
            }
            buffer[j++] = '</table>';
            buffer[j++] = '</td><td class="invisible" style="font-size:1.0em;text-align:center;">';
            //
            // Valpalbum ¤¤¤
            //
            x = theLitter.getElementsByTagName("bildalbum");
/*            
            var IsHeading = false;
            if (x.length > 0) {
                for (i = 0; i < x.length; i++) {
                    if (x[i].parentNode.nodeName == "kull") {
                        if (IsHeading == false) {
                            IsHeading = true;
                            buffer[j++] = '<a name="Valpbilder"><h2>Bildalbum!</h2></a>';
                            buffer[j++] = '<table>';
                        }
                        buffer[j++] = '<tr><td class="xinvisible" style="border:none;">';
                        buffer[j++] = '<a class="anyLinkNextDark9x9" href="' + PrepHref(x[i].getAttribute("BildalbumHref")) + '"><img src="../bilder/NextBlack9x9.gif" border="0" align="absmiddle" />' + x[i].getAttribute("BildalbumRubrik");
                        if (x[i].getAttribute("BildTumnagelHref") != null && x[i].getAttribute("BildTumnagelHref") != "") {
                            buffer[j++] = '<br/><img style="padding-top:3px;" src="' + PrepHref(x[i].getAttribute("BildTumnagelHref")) + '" border="0" align="top">';
                        }
                        buffer[j++] = '</a></td></tr>';
                    }
                }
                if (IsHeading == true) {
                    buffer[j++] = '</table>';
                }
            }
  */
            var bilderna = [], ii = 0;
            if (x.length > 0) {
                for (i = 0; i < x.length; i++) {
                    if (x[i].parentNode.nodeName == "kull") {
                        bilderna[ii] = x[i];
                        ii++; 
                    }
                }
            }
            if (ii > 0) {
                var rub = '<h2 name="Valpbilder">Bildalbum</h2>';
                buffer[j++] = BuildThumbnails(bilderna, rub, 2, "valpAlbumContainer", "invisibleCompact", false, false, false, "RubLink2");
            }
            //
            // Valpbilder
            //
            x = theLitter.getElementsByTagName("bild");
            var bilderna = [], ii = 0;
            if (x.length > 0) {
                for (i = 0; i < x.length; i++) {
                    if (x[i].parentNode.nodeName == "kull") {
                        bilderna[ii] = x[i];
                        ii++; 
                    }
                }
            }
            if (ii > 0) {
                buffer[j++] = BuildThumbnails(bilderna,"<h2>Blandade bilder (klicka för förstoring)</h2>", 3, "invisibleCompact", "invisibleCompact");
            }

            buffer[j++] = '</td></tr></table>';

            //
            // Valpar
            //
            var litterDate=new Date(); //2010-02-28
            var aDateStr = theLitter.getAttribute("KullFödelsedatum");
            litterDate.setFullYear(aDateStr.substr(0,4),aDateStr.substr(5,2),aDateStr.substr(8,2)); // Get date of litter
            var today = new Date();
            today.setFullYear(today.getFullYear()-5); // Backa 5år

            var x = theLitter.getElementsByTagName("valp"); //jl/2010-03-03 ("puppy")

            var FinnsValpbilder = false;
            var iBildalbum = [];
            var iBilder = [];
            var FinnsHitFlyttade = false;
            var iHitFlyttade = [];
            for (i = 0; i < x.length; i++) {
                var xBildalbum = x[i].getElementsByTagName("bildalbum");
                var xBild = x[i].getElementsByTagName("bild"); // OBS - måste ligga före BuildThumbnails
                var strBildalbum = BuildThumbnails(xBildalbum,"", 1, "invisibleCompact", "invisibleCompact"); //+' ALB ';
                var strBilder = BuildThumbnails(xBild,"", 3, "invisibleCompact", "invisibleCompact",false,false); //+' BLD ';
                iBildalbum[i] = strBildalbum; //2010-11-08
                iBilder[i] = strBilder;
                if (strBildalbum != "" || strBilder != "") {
                    FinnsValpbilder = true;
                }
                iHitFlyttade[i] = x[i].getAttribute("hitflyttade");
                if (iHitFlyttade[i] != "") {
                    FinnsHitFlyttade = true;
                }
            }
            buffer[j++] = '<br/><table>'; //  width="90%"
            buffer[j++] = '<tr><th class="RubGoldTD35px" colspan="4" style="font-size:1.0em;">Valpar</th>';
            buffer[j++] = '<tr>';
            buffer[j++] = '<th class="RubUnderGold">Namn</th>';
            buffer[j++] = '<th class="RubUnderGold">Kön</th>';
            if (FinnsHitFlyttade && litterDate>today) {
                // Om tillräckligt ny kull för att visa namn på valpköpare
                buffer[j++] = '<th class="RubUnderGold">Hit flyttande valparna</th>';
            } else {
                // Annars skippas valpköpare
            }
            if (FinnsValpbilder) {
                buffer[j++] = '<th class="RubUnderGold">Bilder</th>';
            }
            buffer[j++] = '</tr>';


            for (i = 0; i < x.length; i++) {
                if (x[i].getAttribute("ValpKön").toUpperCase() == 'TIK') {
                    buffer[j++] = '<tr><td class="valpnamntik">' + x[i].getAttribute("ValpNamn") + '</td>';
                } else {
                    buffer[j++] = '<tr><td class="valpnamnhane">' + x[i].getAttribute("ValpNamn") + '</td>';
                }
                buffer[j++] = '<td>' + x[i].getAttribute("ValpKön") + '</td>';
                if (FinnsHitFlyttade && litterDate>today) {
                    buffer[j++] = '<td>';
                    buffer[j++] = iHitFlyttade[i];
                    buffer[j++] = '</td>';
                }
                if (FinnsValpbilder) {
                    buffer[j++] = '<td style="vertical-align:top;">';
                    //
                    // Bildalbum för enskild valp
                    //
                    buffer[j++] = iBildalbum[i];
                    //
                    // Bilder för enskild valp 
                    //
                    buffer[j++] = iBilder[i];
                    
                    buffer[j++] = '</td>';
                    buffer[j++] = '</tr>';
                }
            }
            buffer[j++] = '</table>';
            //
            // Valparnas stamtavla
            //
            buffer[j++] = BuildStamtavla(theLitter,"stamtavla");
            isrtElem.innerHTML = buffer.join("");
        }
    }
}
//======================================================================
function BuildKullLinkPrev(theKullId, theCaption) {
    return '<a class="RubLink2" href="Kull.htm?xmlref=../kennel.xml&litterId=' + theKullId + '"><img src="../bilder/PrevBlack.gif" / align="absmiddle" border="0">' + theCaption + '</a>'; 
}
function BuildKullLinkNext(theKullId, theCaption) {
    return '<a class="RubLink2" href="Kull.htm?xmlref=../kennel.xml&litterId=' + theKullId + '">' + theCaption + '<img src="../bilder/NextBlack.gif" / align="absmiddle" border="0"></a>';
}
//======================================================================
function BuildDogindexHtml(xmlDoc, isrtElem) {

    if (typeof (window.parent.frames[0].document.gDogindexHtml) != "undefined") {
        // Use cached HTML
        isrtElem.innerHTML = window.parent.frames[0].document.gDogindexHtml;
        //alert('cached BuildDogindexHtml');

    } else {
        //alert('Building BuildDogindexHtml');

        var buffer = [], j = 0;
        var iHundar = xmlDoc.getElementsByTagName("hund");
        
        //
        // Rubrik
        //
        document.title = 'Våra hundar';
        buffer[j++] = BuildHeader("", "Våra hundar", document.title, '../bilder/');
        buffer[j++] = '<table>';
        buffer[j++] = '    <tr><td class="invisible" style="padding:0;">';
        //
        // Tikar
        //
        buffer[j++] = '<table style="font-size:1.2em;">';
        buffer[j++] = '    <tr>';
        buffer[j++] = '        <th class="RubGoldTD3" style="text-align:center;font-size:1.0em;" colspan="2">Tikar</th>';
        buffer[j++] = '    </tr>';
        for (q = 0; q < iHundar.length; q++) {
            var theDog = iHundar[q];
            if (IsDeceased(theDog) == false && theDog.getAttribute("HundKön").toUpperCase() == 'TIK') {
                buffer[j++] = '    <tr>';
                buffer[j++] = '        <td class="invisible" style="border-right:none;text-align:right;"><a href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q) + '"><img class="dogprofilethumb" src="' + PrepHref(theDog.getAttribute("HundIndexbild")) + '"/></a></td>';
                buffer[j++] = '        <td class="invisible" style="border-left:none;vertical-align:middle;"><a href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q) + '"><img src="../bilder/NextBlack.gif" / align="absmiddle" border="0">' + theDog.getAttribute("HundNamn") + '</a></td>';
                buffer[j++] = '    </tr>';
            }
        }
        buffer[j++] = '</table>';
        buffer[j++] = '</td><td class="invisible">&nbsp;</td><td class="invisible" style="padding:0;">';
        //
        // Hanar
        //
        buffer[j++] = '<table style="font-size:1.2em;">';
        buffer[j++] = '    <tr>';
        buffer[j++] = '        <th class="RubGoldTD3" style="text-align:center;font-size:1.0em;" colspan="2">Hanar</th>';
        buffer[j++] = '    </tr>';
        for (q = 0; q < iHundar.length; q++) {
            var theDog = iHundar[q];
            if (IsDeceased(theDog) == false && theDog.getAttribute("HundKön").toUpperCase() != 'TIK') {
                buffer[j++] = '    <tr>';
                buffer[j++] = '        <td class="invisible" style="border-right:none;text-align:right;"><a href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q) + '"><img class="dogprofilethumb" src="' + PrepHref(theDog.getAttribute("HundIndexbild")) + '"/></a></td>';
                buffer[j++] = '        <td class="invisible" style="border-left:none;vertical-align:middle;"><a href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q) + '"><img src="../bilder/NextBlack.gif" / align="absmiddle" border="0">' + theDog.getAttribute("HundNamn") + '</a></td>';
                buffer[j++] = '    </tr>';
            }
        }
        buffer[j++] = '</table>';
        buffer[j++] = '</td></tr></table>';

        window.parent.frames[0].document.gDogindexHtml = buffer.join("");
        isrtElem.innerHTML = window.parent.frames[0].document.gDogindexHtml;
    }
}
//======================================================================
function BuildDogHtml(xmlDoc, Id, isrtElem, iShowAngel) {
    // XML DOM ref http://msdn.microsoft.com/en-us/library/aa925430.aspx
    var buffer = [], j = 0;
    var iHundar = xmlDoc.getElementsByTagName("hund");
    
    for (q = 0; q < iHundar.length; q++) {
        var theDog = iHundar[q];

        if ((parseInt(q) == Id || theDog.getAttribute("HundId") == Id) && (iShowAngel == true || IsDeceased(theDog) == false)) {
            // Process the wanted dog
            document.title = theDog.getAttribute("HundNamn");
            //
            // Rubrik
            //
            if (IsDeceased(theDog) == true) {
                buffer[j++] = BuildHeader("../Minnen/Index.htm", "Änglahundar", document.title, '../bilder/');
                document.body.className = AddAngelSuffix(theDog,'DogprofileBody');
                //
                // Prev/ Next
                //
                buffer[j++] = '<table style="font-size:1.2em;"><tr><td class="invisibleAngel" width="50%" style="text-align:right;">';
                if (iHundar.length == 1) {
                    // none
                } else if (q == 0 && IsDeceased(iHundar[q + 1]) == true) {
                    // Next
                    var nextDog = iHundar[q + 1];
                    buffer[j++] = '</td><td class="invisibleAngel"><span class="invisibleAngel">&nbsp;|&nbsp;</span></td><td class="invisibleAngel" width="50%">';
                    buffer[j++] = '<a class="RubLink2Angel" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q + 1) + '&ShowAngel=True">' + ' ' + nextDog.getAttribute("HundNamn") + '<img src="../bilder/NextWhite.gif" / align="absmiddle" border="0"></a>';
                } else if (q + 1 == iHundar.length && IsDeceased(iHundar[q - 1]) == true) {
                    // Prev 
                    var prevDog = iHundar[q - 1];
                    buffer[j++] = '<a class="RubLink2Angel" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q - 1) + '&ShowAngel=True"><img src="../bilder/PrevWhite.gif" / align="absmiddle" border="0">' + ' ' + prevDog.getAttribute("HundNamn") + '</a>';
                    buffer[j++] = '</td><td class="invisibleAngel"><span class="RubLink2">&nbsp;|&nbsp;</span></td><td class="invisibleAngel" width="50%">';
                } else {
                    // Prev Next
                    prevDog = iHundar[q - 1];
                    nextDog = iHundar[q + 1];
                    buffer[j++] = '<a class="RubLink2Angel" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q - 1) + '&ShowAngel=True"><img src="../bilder/PrevWhite.gif" / align="absmiddle" border="0">' + ' ' + prevDog.getAttribute("HundNamn") + '</a>';
                    buffer[j++] = '</td><td class="invisibleAngel"><span class="invisibleAngel">&nbsp;|&nbsp;</span></td>';
                    if (IsDeceased(nextDog) == true) {
                        buffer[j++] = '<td class="invisibleAngel" width="50%"><a class="RubLink2Angel" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q + 1) + '&ShowAngel=True">' + ' ' + nextDog.getAttribute("HundNamn") + '<img src="../bilder/NextWhite.gif" / align="absmiddle" border="0"></a>';
                    } else {
                    }
                }
                buffer[j++] = '</td></tr></table>';

            } else {
                buffer[j++] = BuildHeader("index.htm?xmlref=../kennel.xml", "Våra hundar", document.title, '../bilder/');
                //
                // Prev/ Next
                //
                buffer[j++] = '<table style="font-size:1.2em;"><tr><td class="invisible" width="50%" style="text-align:right;">';
                if (iHundar.length == 1) {
                    // none
                } else if (q == 0) {
                    // Next
                    var nextDog = iHundar[q + 1];
                    buffer[j++] = '</td><td class="invisible"><span class="RubLink2">&nbsp;|&nbsp;</span></td><td class="invisible" width="50%">';
                    buffer[j++] = '<a class="RubLink2" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q + 1) + '">' + ' ' + nextDog.getAttribute("HundNamn") + '<img src="../bilder/NextBlack.gif" / align="absmiddle" border="0"></a>';
                } else if (q + 1 == iHundar.length && IsDeceased(iHundar[q - 1]) == false) {
                    // Prev 
                    var prevDog = iHundar[q - 1];
                    buffer[j++] = '<a class="RubLink2" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q - 1) + '"><img src="../bilder/PrevBlack.gif" / align="absmiddle" border="0">' + ' ' + prevDog.getAttribute("HundNamn") + '</a>';
                    buffer[j++] = '</td><td class="invisible"><span class="RubLink2">&nbsp;|&nbsp;</span></td><td class="invisible" width="50%">';
                    //buffer[j++] = 'LAST';
                } else {
                    // Prev Next
                    prevDog = iHundar[q - 1];
                    nextDog = iHundar[q + 1];
                    if (IsDeceased(prevDog) == false) {
                        buffer[j++] = '<a class="RubLink2" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q - 1) + '"><img src="../bilder/PrevBlack.gif" / align="absmiddle" border="0">' + ' ' + prevDog.getAttribute("HundNamn") + '</a>';
                    } else {
                    }
                    buffer[j++] = '</td><td class="invisible"><span class="RubLink2">&nbsp;|&nbsp;</span></td>';
                    buffer[j++] = '<td class="invisible" width="50%"><a class="RubLink2" href="Hund.htm?xmlref=../kennel.xml&Id=' + parseInt(q + 1) + '">' + ' ' + nextDog.getAttribute("HundNamn") + '<img src="../bilder/NextBlack.gif" / align="absmiddle" border="0"></a>';
                }
                buffer[j++] = '</td></tr></table>';
            }
            //
            // Hundinfo
            //
            buffer[j++] = '<table class="'+AddAngelSuffix(theDog,'invisible')+'"><tr><td class="'+AddAngelSuffix(theDog,'invisible')+'"><table class="'+AddAngelSuffix(theDog,'invisible')+'">';
            if (theDog.getAttribute("HundPresentationsbild") != "") {
                buffer[j++] = '<tr><th  class="' + AddAngelSuffix(theDog, 'Dogprofile') + '" colspan="2" style="text-align:center;">';
                if (IsDeceased(theDog) == true) {
                    buffer[j++] = '<a href="../Minnen/Angel.htm?xmlref=../kennel.xml&Id=' + Id + '">';
                }
                buffer[j++] = '<img class="dogprofileimage" src="' + PrepHref(theDog.getAttribute("HundPresentationsbild")) + '" />';
                if (IsDeceased(theDog) == true) {
                    buffer[j++] = '</a>';
                }
                buffer[j++] = '</th></tr>';
            }
            if (IsDeceased(theDog) == true) {
                buffer[j++] = '<tr><th  class="' + AddAngelSuffix(theDog, 'Dogprofile') + '" colspan="2" style="text-align:center;">';
                buffer[j++] = '<a class="anyLinkNextDark9x9Angel" href="../Minnen/Angel.htm?xmlref=../kennel.xml&Id=' + Id + '"><img src="../bilder/NextWhite.gif" border="0" align="absmiddle" />' + theDog.getAttribute("HundId") + 's Änglasida</a>';
                buffer[j++] = '</th></tr>';
            }
            buffer[j++] = '<tr><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">Namn:</td><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">' + theDog.getAttribute("HundNamn") + '</td></tr>';
            buffer[j++] = '<tr><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">Kön:</td><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">' + theDog.getAttribute("HundKön") + '</td></tr>';
            buffer[j++] = '<tr><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">Födelsedatum:</td><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">' + theDog.getAttribute("HundFödelsedatum") + '</td></tr>';
            if (IsDeceased(theDog) == true) {
                buffer[j++] = '<tr><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">Död:</td><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">' + theDog.getAttribute("HundDödsdatum") + '</td></tr>';
            }
            if (theDog.getAttribute("HundVeterinärresultat") != "") {
                buffer[j++] = '<tr><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">Veterinärresultat:</td><td class="'+AddAngelSuffix(theDog,'Dogprofile')+'">' + theDog.getAttribute("HundVeterinärresultat") + '</td></tr>';
            }
            buffer[j++] = '</table></td><td class="invisible">';
            //
            // Bildalbum
            //
            x = theDog.getElementsByTagName("bildalbum");
            if (x.length > 0) {
                var rub = '<h2 class="'+AddAngelSuffix(theDog,'Dogprofile')+'">Bildalbum</h2>';
                buffer[j++] = BuildThumbnails(x, rub, 1, AddAngelSuffix(theDog, 'DogAlbumContainer'), AddAngelSuffix(theDog, 'invisibleCompact'), false, false, IsDeceased(theDog), AddAngelSuffix(theDog, 'RubLink2'));
            }
            
            //
            // Bilder
            //
            x = theDog.getElementsByTagName("bild");
            if (x.length > 0) {
                var rub = '<h2 class="' + AddAngelSuffix(theDog, 'Dogprofile') + '">Blandade bilder (klicka för förstoring)</h2>';
                buffer[j++] = BuildThumbnails(x,rub, 0, AddAngelSuffix(theDog, 'invisibleCompact'), AddAngelSuffix(theDog, 'invisibleCompact'),false,false,IsDeceased(theDog));
            }
            if (IsDeceased(theDog) == true) { 
                if (theDog.getAttribute("HundÄnglabild") != null && theDog.getAttribute("HundÄnglabild") != "") {
                    //buffer[j++] = '<h2 class="' + AddAngelSuffix(theDog, 'Dogprofile') + '">Blandade bilder</h2>';
                    buffer[j++] = '<img class="dogprofilethumb" onclick="javascript:TogglePic(this);" src="' + PrepHref(theDog.getAttribute("HundÄnglabild")) + '"/>&nbsp;';
                }
            }

            buffer[j++] = '</td></tr></table>';
            //
            // Hundens stamtavla
            //
            buffer[j++] = BuildStamtavla(theDog,AddAngelSuffix(theDog,'stamtavla'));

            if (IsDeceased(theDog) == true) {
                buffer[j++] = '<hr>'; 
            } else {
                buffer[j++] = '<p><img src="../bilder/ding.gif" /></p>';
            }
            
            isrtElem.innerHTML = buffer.join("");
        }
    }
}
//======================================================================
function BuildAngelindexHtml(xmlDoc, isrtElem) {
    var buffer = [], j = 0;
    var iHundar = xmlDoc.getElementsByTagName("hund");
    document.title = 'Änglahundar';
    document.body.style.background = 'black url(Bilder/rainbowbridge_rays.jpg) no-repeat center top';
    DHTMLSound('Minnen/XWhiterShadeOfPale.mp3');

    //
    // Rubrik
    //
    buffer[j++] = BuildHeader("", document.title, document.title, '../bilder/');
    buffer[j++] = '<br/>';   //'<img src="../bilder/ding.gif" />';
    buffer[j++] = '<table class="invisible" style="position: absolute; top: 120px; left: 33%;">';
    buffer[j++] = '    <tr>';
    buffer[j++] = '        <td class="invisible" align="center">';
    buffer[j++] = '    <table  style="font-size:1.3em;">';

    for (q = (iHundar.length - 1); q >= 0; q--) {
        var theDog = iHundar[q];
        if (IsDeceased(theDog)) {
            var birthYear = theDog.getAttribute("HundFödelsedatum").substr(0, 4);
            var deathYear = theDog.getAttribute("HundDödsdatum").substr(0, 4);
            buffer[j++] = '<tr><td class="minneindex" style="padding:0;">';
            buffer[j++] = '<a class="minnen" href="Angel.htm?xmlref=../kennel.xml&Id=' + theDog.getAttribute("HundId") + '"><img src="../bilder/NextBlack.gif" border="0" align="absmiddle" />' + theDog.getAttribute("HundId") + '</a>';
            buffer[j++] = '</td><td class="minneindex" style="padding:0;padding-left:6px;"><a class="minnen" href="Angel.htm?xmlref=../kennel.xml&Id=' + theDog.getAttribute("HundId") + '">' + birthYear + '&mdash;' + deathYear + ' (' + theDog.getAttribute("HundNamn") + ')</a>';
            buffer[j++] = '</td></tr>';
        }
    }
    buffer[j++] = '</table></td></tr></table>';
    isrtElem.innerHTML = buffer.join("");
}
//======================================================================
function BuildAngelHtml(xmlDoc, Id, isrtElem) {
    var buffer = [], j = 0;
    var iHundar = xmlDoc.getElementsByTagName("hund");
    
    for (q = 0; q < iHundar.length; q++) {
        var theDog = iHundar[q];
        if (parseInt(q) == Id || theDog.getAttribute("HundId") == Id) {
            // Process the wanted dog
            document.title = 'Till minne av ' + theDog.getAttribute("HundId"); 
            //
            // Rubrik
            //
            buffer[j++] = BuildHeader("../Minnen/Index.htm", "Änglahundar", document.title, '../bilder/');

            buffer[j++] = '<center>';
            buffer[j++] = '<div align="center">';
            buffer[j++] = '<h2 class="minnebody">'+theDog.getAttribute("HundNamn")+'</h2>';
            buffer[j++] = '<h3 class="minnebody">' + theDog.getAttribute("HundFödelsedatum") + ' &mdash; ' + theDog.getAttribute("HundDödsdatum") + '</h3>';
            buffer[j++] = '<table>';
            buffer[j++] = '<tr>';
            buffer[j++] = '<td class="minnebody" style="text-align:center;">';
            buffer[j++] = '<a href="../Hundar/Hund.htm?xmlref=../kennel.xml&Id=' + Id + '&ShowAngel=True">';
            buffer[j++] = '<img src="' + PrepHref(theDog.getAttribute("HundÄnglabild")) + '" border="0" style="border:solid 14px #555555"/>';
            buffer[j++] = '</a><br/>';

            buffer[j++] = '<a class="anyLinkNextDark9x9Angel" href="../Hundar/Hund.htm?xmlref=../kennel.xml&Id=' + Id + '&ShowAngel=True"><img src="../bilder/NextWhite.gif" border="0" align="absmiddle" />';
            buffer[j++] = theDog.getAttribute("HundId") + 's sida';
            buffer[j++] = '</a><br/>';

            buffer[j++] = '<img src="Bilder/animated_candle.gif" border="0" />';
            buffer[j++] = '</td>';
            buffer[j++] = '<br />';
            buffer[j++] = '<td class="minnebody" align="center" width="500px">';
            buffer[j++] = Dikter();    
            buffer[j++] = '</td>';
            buffer[j++] = '</tr>';
            buffer[j++] = '</table>';
            buffer[j++] = '</div>';
            buffer[j++] = '<br />';
            buffer[j++] = '<br />';
            buffer[j++] = '<img src="Bilder/drop.gif" border="0" />';
            buffer[j++] = '</center>';
            buffer[j++] = '<br /><br /><br /><br />';

            isrtElem.innerHTML = buffer.join("");
        }
    }
}

//======================================================================
function BuildGalleriindexHtml(xmlDoc, isrtElem) {
    var buffer = [], j = 0;
    document.title = 'Galleri';

    if (typeof (window.parent.frames[0].document.gGalleryHtml) != "undefined") {
        // Use cached HTML
        isrtElem.innerHTML = window.parent.frames[0].document.gGalleryHtml;

    } else {
        //
        // Rubrik
        //
        buffer[j++] = BuildHeader("", document.title, document.title, '../bilder/');
        buffer[j++] = '<br/>';   
        //
        // Bilder
        //
        buffer[j++] = '<table width="80%">';

        buffer[j++] = '<tr><th class="RubGoldTD3">Blandade bilder (klicka för förstoring)</th>';   
        buffer[j++] = '<tr><td class="invisible">';
        buffer[j++] = BuildThumbnails(xmlDoc.getElementsByTagName("bild"),"", 8, "gallery", "galleryInvisible", true, true);
        buffer[j++] = '</td></tr>';   
/*
        buffer[j++] = '<tr><th class="RubGoldTD3">Bildalbum</th>';   
        buffer[j++] = '<tr><td class="invisible">';   
        buffer[j++] = BuildThumbnails(xmlDoc.getElementsByTagName("bildalbum"),"", 8, "gallery", "galleryInvisible");
        buffer[j++] = '</td></tr>';   

        buffer[j++] = '<tr><th class="RubGoldTD3">Valpbilder</th>';   
        buffer[j++] = '<tr><td class="invisible">';   
        buffer[j++] = BuildThumbnails(xmlDoc.getElementsByTagName("valp"),"", 8, "gallery", "galleryInvisible");
        buffer[j++] = '</td></tr></table>';   
*/
        window.parent.frames[0].document.gGalleryHtml = buffer.join("");
        isrtElem.innerHTML = window.parent.frames[0].document.gGalleryHtml;
    }
}
//======================================================================
function BuildThumbnails(allElems, enRubrik, antKolumner, classnameOuterTable, classnameInnerTable, ShowImageCount, ShowImageCaption, IsDeceased, AlbumLinkStyle) {
    var buffer = [], j = 0;
    var x = allElems;
    IsHeading = false;
    //alert('antKolumner = ' + antKolumner);
    if (x.length > 0) {
        var ix = 0; cnt = antKolumner;
        for (iy = 0; iy < x.length; iy++) {
            ix++
            var iNodename = x[iy].nodeName;
            if (IsHeading  == false) {
                IsHeading = true;
                if (enRubrik != "") {
                    buffer[j++] = enRubrik;
                }
                if (iNodename == "bild") {
                    buffer[j++] = '<table class="' + classnameOuterTable + '">';
                    buffer[j++] = '<tr><td class="'+classnameOuterTable+'">';
                } else if (iNodename == "bildalbum") {
                    buffer[j++] = '<table class="' + classnameOuterTable + '">'; // style="xxfont-size:1.3em;xxxborder:solid 3px white;">';
                    buffer[j++] = '<tr><td class="'+classnameOuterTable+'">';
                } else {
                    buffer[j++] = '<table class="' + classnameOuterTable + '">';
                    buffer[j++] = '<tr><td class="'+classnameOuterTable+'">';
                }
            }            
            if (iNodename == "bild") {
                if (cnt == 0) {
                   // Flowing thumbnails
                } else {
                    if (ShowImageCount == true) {
                        buffer[j++] = '<table width="100%"><tr><td class="'+classnameInnerTable+'">'+parseInt(iy+1)+'</td></tr><tr><td class="'+classnameInnerTable+'" style="text-align:center;">';
                    } else {
                        buffer[j++] = '<table width="100%"><tr><td class="'+classnameInnerTable+'" style="text-align:center;">';
                    }
                }
                if (x[iy].getAttribute("BildTumnagelHref") != null && x[iy].getAttribute("BildTumnagelHref") != "") {
                    var iBildTumnagelHref = PrepHref(x[iy].getAttribute('BildTumnagelHref'));
                    var iBildHref = PrepHref(x[iy].getAttribute('BildHref'));
                    buffer[j++] = '<img class="dogprofilethumb" id="putte" onclick="javascript:TogglePic2(this,\'' + iBildTumnagelHref + '\',\'' + iBildHref + '\');" src="' + iBildTumnagelHref + '"/>&nbsp;';
                } else  {
                    buffer[j++] = '<img class="dogprofilethumb" onclick="javascript:TogglePic(this);" src="' + PrepHref(x[iy].getAttribute("BildHref")) + '"/>&nbsp;';
                }
                if (ShowImageCaption == true) {
                    if (x[iy].getAttribute("BildRubrik") != null && x[iy].getAttribute("BildRubrik") != "") {
                        buffer[j++] = '</td></tr><tr><td class="'+classnameInnerTable+'" style="text-align:center;">'+x[iy].getAttribute("BildRubrik"); //+'</td></tr>';
                    }
                } else {
                }
                if (cnt == 0) {
                    // Flowing thumbnails
                } else {
                    buffer[j++] = '</td></tr></table>';
                    if (ix >= cnt) {
                        ix = 0;
                        buffer[j++] = '</td></tr><tr><td class="'+classnameOuterTable+'">';
                    } else {
                        buffer[j++] = '</td><td class="'+classnameOuterTable+'">';
                    }
                }

            } else if (iNodename == "bildalbum") {
            //------------
                if (cnt == 0) {
                    // Flowing thumbnails
                } else {
                    if (ShowImageCount == true) {
                        buffer[j++] = '<table width="100%"><tr><td class="' + classnameInnerTable + '">' + parseInt(iy + 1) + '</td></tr><tr><td class="' + classnameInnerTable + '">';
                    } else {
                        buffer[j++] = '<table width="100%"><tr><td class="' + classnameInnerTable + '">';
                    }
                }
                //------------
                if (x[iy].getAttribute("BildTumnagelHref") != null && x[iy].getAttribute("BildTumnagelHref") != "") {
                    iBildTumnagelHref = PrepHref(x[iy].getAttribute('BildTumnagelHref'));
                    var iBildalbumHref = PrepHref(x[iy].getAttribute('BildalbumHref'));
                    var iBildalbumRubrik = x[iy].getAttribute('BildalbumRubrik');
                //--------------------
                    //buffer[j++] = '<a class="' + AlbumLinkStyle + '" href="' + iBildalbumHref + '">' + iBildalbumRubrik + '<br/><img class="dogprofilethumb" src="' + iBildTumnagelHref + '" border="0" /></a><br/>';
                    buffer[j++] = '<div style="float:inherit;">';
                    buffer[j++] = '<a class="' + AlbumLinkStyle + '" href="' + iBildalbumHref + '"><img class="dogprofilethumb" src="' + iBildTumnagelHref + '" border="0" /></a>';
                    buffer[j++] = '<br/>';
                    if (IsDeceased == true) {
                        buffer[j++] = '<a class="' + AlbumLinkStyle + '" href="' + iBildalbumHref + '"><img src="../bilder/NextWhite.gif" border="0" align="absmiddle" />' + iBildalbumRubrik + '</a>';
                    } else {
                        buffer[j++] = '<a class="' + AlbumLinkStyle + '" href="' + iBildalbumHref + '"><img src="../bilder/NextBlack9x9.gif" border="0" align="absmiddle" />' + iBildalbumRubrik + '</a>';
                    }
                    buffer[j++] = '</div>';
                    //--------------------

                } else if (x[iy].getAttribute("BildalbumHref") != null && x[iy].getAttribute("BildalbumHref") != "") {

                    iBildalbumHref = PrepHref(x[iy].getAttribute('BildalbumHref'));
                    iBildalbumRubrik = x[iy].getAttribute('BildalbumRubrik');
                    //buffer[j++] = '<div style="float:inherit;">';
                    if (IsDeceased == true) {
                        buffer[j++] = '<a class="'+AlbumLinkStyle+'" href="' + iBildalbumHref + '"><img src="../bilder/NextWhite.gif" border="0" align="absmiddle" />' + iBildalbumRubrik + '</a>';
                    } else {
                        buffer[j++] = '<a class="'+AlbumLinkStyle+'" href="' + iBildalbumHref + '"><img src="../bilder/NextBlack9x9.gif" border="0" align="absmiddle" />' + iBildalbumRubrik + '</a>';
                    }
                    //buffer[j++] = '</div>';
                    //buffer[j++] = '<br/>'; //100318

                } else {
                        buffer[j++] = '?1';
                }
                //--------------
                //buffer[j++] = '<br/>';
                if (cnt == 0) {
                    // Flowing thumbnails
                } else {
                    buffer[j++] = '</td></tr></table>';
                    if (iy == x.length-1) {
                        // Last elem 
                    } else if (ix >= cnt) {
                        ix = 0;
                        buffer[j++] = '</td></tr><tr><td class="' + classnameOuterTable + '">';
                    } else {
                        buffer[j++] =  '</td><td class="' + classnameOuterTable + '">';
                    }
                }
                //--------------
            

            } else if (iNodename == "valp") {
                if (x[iy].getAttribute("ValpBilder") != null && x[iy].getAttribute("ValpBilder") != "") {
                    buffer[j++] = '<a href="' + PrepHref(x[iy].getAttribute('ValpBilder')) + '">' + x[iy].getAttribute('ValpNamn') + '</a><br/>';
                }
            } else {
                buffer[j++] = '?2';
            }
        }
        if (iNodename == "bild" || iNodename == "bildalbum") {
            if (cnt == 0) {
                // Flowing thumbnails
            } else {
                if (iy > cnt) {
                    while (ix<cnt-1) {
                        buffer[j++] = '</td><td class="'+classnameOuterTable+'">&nbsp;';
                        ix++;
                    }
                }
                buffer[j++] = '</td></tr>';
            }
        } else {
            buffer[j++] = '</td></tr>';
        }
        buffer[j++] = '</table>';
    }
    return buffer.join("");
}
//======================================================================
function PrepHref(givenHref) {
    if (givenHref.substr(0, 3) != "../") {
        return GetBaseUrl() + escape(givenHref);
    } else {
        return givenHref;
    }
}
//======================================================================
function TogglePic2(anImgTag, theSrcThumb, theSrcLarge, imgID) {

    if (theSrcThumb == theSrcLarge) {
        // Bild utan tumnagel
        TogglePic(anImgTag);
    } else {
        // Bild med tumnagel
        var iUrl = anImgTag.src;
        if (iUrl.substring(iUrl.length - theSrcLarge.length + 2) == theSrcLarge.substring(2) || anImgTag.style.height == null) {

            anImgTag.src = theSrcThumb; // Återställningen funkar inte med IE7
            anImgTag.style.height = "60px";
            anImgTag.style.position = "";
            anImgTag.style.border = "solid 3px white";
        /*            
          //var newimg = new Image();
          //newimg.src = theSrcThumb;
            alert('aa ' + imgID);
          //document.replaceNode(anImgTag, newimg);
          //document.getElementById(imgID).src=theSrcThumb;
          //fnReplace(anImgTag);
            var oNewImg = document.createElement("IMG");
            oNewImg.src = theSrcThumb;
            oNewImg.style.height = "60px";
            oNewImg.style.width = anImgTag.style.width;
          //oNewImg.style.position = "";
            oNewImg.style.border = "solid 3px white";
            oNewImg.onclick = new Function('TogglePic2(\'' + oNewImg + '\',\'' + theSrcThumb + '\',\'' + theSrcLarge + '\')');
            anImgTag.replaceNode(oNewImg);
            alert('aaa');
          */  

        } else {
            anImgTag.src = theSrcLarge;
            // Note: you need to set the onload before you set the src.
            var newimg = new Image();
            newimg.onload = function() {
                //alert('image loaded');
                anImgTag.style.height = newimg.height + "px"; // Use original size
                anImgTag.style.position = "fixed";
                anImgTag.style.top = "60px";
                anImgTag.style.left = "60px";
                anImgTag.style.border = "solid 16px white";
            };
            newimg.src = theSrcLarge;
        /*  anImgTag.style.height = "500px";
            anImgTag.style.position = "fixed"; // "absolute";
            anImgTag.style.top = "60px";
            anImgTag.style.left = "60px";
            anImgTag.style.border = "solid 16px white";
        */           
        }
    }
}

function fnReplace(theTag) {
    var sPreserve = theTag.innerHTML;
    alert(sPreserve);
    var oNewNode = document.createElement("IMG");
    theTag.replaceNode(oNewNode);
    oNewNode.innerHTML = sPreserve;
}
//======================================================================
function TogglePic(anImgTag) {
    var newimg = new Image();
    newimg.onload = function() {
        //alert('newimg.style.height = ' + newimg.style.height + ' newimg.height = ' + newimg.height);
        //if (anImgTag.style.height == "500px" || anImgTag.style.height == null) {
        //alert('anImgTag.style.height = ' + anImgTag.style.height + ' anImgTag.height = ' + anImgTag.height);
        //if (anImgTag.style.height != "" || anImgTag.style.height == null) {
        if (anImgTag.style.height == (newimg.height + "px") || anImgTag.style.height == null) {
            anImgTag.style.height = "60px";
            anImgTag.style.position = "";
            anImgTag.style.border = "solid 3px white";
        } else {
        // Note: you need to set the onload before you set the src.
            /*
            var newimg = new Image();
            newimg.onload = function() {
                //alert('image loaded');
                anImgTag.style.height = newimg.height + "px"; // Use original size
                anImgTag.style.position = "fixed";
                anImgTag.style.top = "60px";
                anImgTag.style.left = "60px";
                anImgTag.style.border = "solid 16px white";
            };
            newimg.src = anImgTag.src; 
            */
            //anImgTag.style.height = "500px";
            anImgTag.style.height = newimg.height + "px";
            anImgTag.style.position = "fixed"; // "absolute";
            anImgTag.style.top = "60px";
            anImgTag.style.left = "60px";
            anImgTag.style.border = "solid 16px white";
        }
    }
    newimg.src = anImgTag.src;
}
//======================================================================
function IsDeceased(theDog) {
    if (theDog.getAttribute("HundDödsdatum") != null) {
        if (theDog.getAttribute("HundDödsdatum") != "") {
            return true; // Hunden är död
        } else {
            return false;
        }
    } else {
        return false;
    }
}
//======================================================================
function AddAngelSuffix(theDog,thsString) {
    if (theDog.getAttribute("HundDödsdatum") != null) {
        if (theDog.getAttribute("HundDödsdatum") != "") {
            return thsString+'Angel'; // Hunden är död
        } else {
            return thsString;
        }
    } else {
        return thsString;
    }
}
//======================================================================
function BuildHeader(aPrevLink,aPrevCaption,aRubTitle,aPicPath) {
    ver = parseInt(navigator.appVersion);
    var ie4 = (ver > 3 && navigator.appName != "Netscape") ? 1 : 0
    var ieversion;
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x;
        ieversion = new Number(RegExp.$1) // capture x.x portion and store as a number
    }
    var buff = [], i = 0;
    if (ieversion >= 8 || navigator.appName == "Netscape") {
        // Firefox eller IE8 eller högre
        buff[i++] = '<table width="100%" style="position:fixed;">'; // Problem med IE7
    } else {
        // IE7 och lägre
        buff[i++] = '<table width="100%">';
    }
    buff[i++] = "<tr>";
    buff[i++] = "<th  width=20% nowrap='nowrap' class='RubValpTD' align=left>";
    if (aPrevLink == "") {
        buff[i++] = "&nbsp;";
    } else {
        buff[i++] = '<a style="color:White" class="prevlink" href="'+aPrevLink+'"><img src="'+aPicPath+'PrevWhite.gif" align="absmiddle" border="0" />'+aPrevCaption+"</a>";
    }
    buff[i++] = "</th>";
    buff[i++] = "<th  nowrap='nowrap' class='RubValpTD2'>"+aRubTitle+"</th>";
    buff[i++] = '<th width="20%" class="RubValpTD" style="vertical-align:middle;"><img src="'+aPicPath+'NextWhite.gif" align="absmiddle" border="0" /><a class="RubLink" href="http://www.creamtoffees.se" target="_top">www.creamtoffees.se</a></th>';
    buff[i++] = "</tr>";
    //---------------------------
    // Problem att lösa
    //  ie7 (compatibility view IE8):
    //      Valpkullar/Våra hundar/Mentalbeskr.index/bildindex/albumbild - stort glapp mellan denna header och nästa html-element
    //      Däremot är följande OK pga fast header: Kontakt/Länkar/Om oss/Nyheter/Änglahundar
    if (navigator.appName == "Netscape") {
    // Firefox eller IE8 eller högre
        buff[i++] = '</table><br/><br/><br/>';
    } else if (ieversion >= 8) {
        buff[i++] = '</table><br/><br/><br/>';
    } else {
    // IE7 och lägre
    buff[i++] = '</table>';
    }
    //---------------------------
    return buff.join("");
}
//======================================================================
function BuildStamtavla(theLitter,theClass) {
    try {
        var x = theLitter.getElementsByTagName("stamtavla");
        var buffer = [], j = 0;
        var i = 0;
        buffer[j++] = '<h2 class="'+theClass+'">Stamtavla</h2>';
        buffer[j++] = '<table class="'+theClass+'">'; // width="90%"
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <th class="' +theClass+ '">Föräldrar</th>';
        buffer[j++] = '        <th class="'+theClass+'">&nbsp;</th>';
        buffer[j++] = '        <th class="'+theClass+'">&nbsp;</th>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'"  rowspan="4"><strong>' + x[i].getAttribute("far") + '</strong></td>';
        buffer[j++] = '        <td class="'+theClass+'"  rowspan="2">' + x[i].getAttribute("farfar") + '</td>';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("farfarsfar") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("farfarsmor") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'"  rowspan="2">' + x[i].getAttribute("farmor") + '</td>';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("farmorsfar") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("farmorsmor") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'"  rowspan="4"><strong>' + x[i].getAttribute("mor") + '</strong></td>';
        buffer[j++] = '        <td class="'+theClass+'"  rowspan="2">' + x[i].getAttribute("morfar") + '</td>';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("morfarsfar") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("morfarsmor") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'"  rowspan="2">' + x[i].getAttribute("mormor") + '</td>';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("mormorsfar") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '      <tr> ';
        buffer[j++] = '        <td class="'+theClass+'" >' + x[i].getAttribute("mormorsmor") + '</td>';
        buffer[j++] = '      </tr>';
        buffer[j++] = '</table>';
        return buffer.join("");
    } catch (err) {
    }

}
//======================================================================
function Dikter() { 
        var r_text = new Array ();
        r_text[0] = "<h2 class='minnebody'>I collected you today...</h2> \
                    <p class='minnebody'>I collected you today<br />in a little box<br />Your beauty confined to ashes</p> \
                    <p class='minnebody'>Our shared years become memories<br />Pictures and memories</p> \
                    <p class='minnebody'>I took you pain away<br />and filled my heart with it<br /> \
                    I was blinded by your closed eyes<br />deafened by your deafness<br /> \
                    muted by your soundlessness<br /> \
                    Even tears are silent<br />when you cried no more</p> \
                    <p class='minnebody'>I collected you today<br />in a little box<br /> \
                    Your beauty confined in a little box<br />Your beauty confined to ashes.</p> \
                    <br /> \
                    <p class='minneauthor'>Michaela Edridge, Warlingham.</p>";
        r_text[1] = "<h2 class='minnebody'>Rainbow Bridge</h2> \
                <p class='minnebody'>Just this side of heaven is a place called Rainbow Bridge.<br /> \
                When an animal dies that has been especially close to someone here, that pet goes to Rainbow Bridge.  \
                There are meadows and hills for all of our special friends so they can run and play together. There is plenty of food, water and sunshine,  \
                and our friends are warm and comfortable.</p><p class='minnebody'>All the animals who had been ill and old are restored to health and vigor.  \
                Those who were hurt or maimed are made whole and strong again, just as we remember them in our dreams of days and times gone by. \
                The animals are happy and content, except for one small thing; they each miss someone very special to them, who had to be left behind.</p> \
                <p class='minnebody'>They all run and play together, but the day comes when one suddenly stops and looks into the distance. Her bright eyes are intent.  \
                Her eager body quivers. Suddenly she begins to run from the group, flying over the green grass, her legs carrying her faster and faster.</p> \
                <p class='minnebody'>You have been spotted, and when you and your special friend finally meet, you cling together in joyous reunion, never to be parted again.  \
                The happy kisses rain upon your face; your hands again caress the beloved head, and you look once more into the trusting eyes of your pet,  \
                so long gone from your life but never absent from your heart.</p> \
                <p class='minnebody'>Then you cross Rainbow Bridge together....<br />never more being apart.</p> \
        ";
        r_text[2] = "<h2 class='minnebody'>Golden Age</h2> \
                <p class='minnebody'>Please don't despair when I'm no longer near,<br /> \
                Life is too short to sorrow bear.<br /> \
                Recall the times we shared, and try not to fear<br /> \
                The emptiness of tomorrow.<br /> \
                <br /> \
                My pretty brown eyes, once so bright, now are old,<br /> \
                My golden hair's sprinkled with grey.<br /> \
                The sun's lost it's heat and the winter's so cold -<br /> \
                I'm ready; release me, I pray.<br /> \
                <br /> \
                I shall rest peacefully knowing I've been,<br /> \
                Your servant, your guardian, your friend.<br /> \
                And I know that one day, yet to come, unforeseen,<br /> \
                Our cruel separation will end.<br /> \
                <br /> \
                For remember, however long you may be,<br /> \
                For you I will patiently wait.<br /> \
                With my toy and a wagging tail, there I'll be,<br /> \
                To greet you - at heaven's gate.<br /> \
                <br /> \
                <p class='minneauthor'>Julia Wrathall, Swallowfield.</p>";

        var i = Math.floor(3*Math.random());
        return r_text[i];

}
//======================================================================
function OpenXML(xmlref) {
    var xmlHttp = false;
    //var gXmlRefs = []; // Alla URLar till öpppnade xml-filer
    //var gXmlDocs = []; // Alla öppnade XML-filer
    var i = 0;
    // Determine if the XML has already been opened.

    // alert('typeof (window.parent.frames.length) =  ' + window.parent.frames.length);
    if (window.parent.frames.length == 0) {
        iDoc = document;
    } else {
        iDoc = window.parent.frames[0].document;
    }
    
    
    if (typeof (iDoc.gXmlRefs) == "undefined") {
        iDoc.gXmlRefs = new Array();
        iDoc.gXmlDocs = new Array();
        // alert('new Arrays!');
    }
    if (iDoc.gXmlRefs.length > 0) {
        for (i = 0; i < iDoc.gXmlRefs.length; i++) {
            if (xmlref == iDoc.gXmlRefs[i]) {
                // Found existing XML-url
                return iDoc.gXmlDocs[i];
            }
        }
    }
    // It's a new XML-url
    // alert('Its a new XML-url A = ' + xmlref);
    
    /* running locally on IE5.5, IE6, IE7 */; /*@cc_on
    if (location.protocol == "file:") {
        if (!xmlHttp) try { xmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); } catch (e) { xmlHttp = false; }
        if (!xmlHttp) try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlHttp = false; }
    }; @cc_off@*/
    /* IE7, Firefox, Safari, Opera...  */
    if (!xmlHttp) try { xmlHttp = new XMLHttpRequest(); } catch (e) { xmlHttp = false; }
    /* IE6 */
    if (typeof ActiveXObject != "undefined") {
        if (!xmlHttp) try { xmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); } catch (e) { xmlHttp = false; }
        if (!xmlHttp) try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlHttp = false; }
    }
    /* IceBrowser */
    if (!xmlHttp) try { xmlHttp = createRequest(); } catch (e) { xmlHttp = false; }

    var hepp = xmlHttp;
    //  xmlHttp.open("GET", xmlref, false);
    var rnd = Math.random() * 10000;
    //alert(xmlref+'?null='+rnd);
    xmlHttp.open("GET", xmlref + '?null=' + rnd, false); // Force no-cache
    xmlHttp.send("");
    xmlDoc = xmlHttp.responseXML;
    
    iDoc.gXmlRefs[i] = xmlref;
    iDoc.gXmlDocs[i] = xmlDoc;
    return xmlDoc;
}
//======================================================================
function state_Change(xmlHttp) {
    if (xmlHttp.readyState == 4) {// 4 = "loaded"
        //alert('=Loaded');
        if (xmlHttp.status == 200) {// 200 = OK
            // ...our code here...
        }
        else {
        }
    } else {
    }
}
//======================================================================

