<?php
# SetSkin changes the current skin to the first available skin from
# the $skin array.
function SetSkin($pagename, $skin) {
    global $Skin, $SkinLibDirs, $SkinDir, $SkinDirUrl,
        $IsTemplateLoaded, $PubDirUrl, $FarmPubDirUrl, $FarmD;

    SDV($SkinLibDirs, array(
        "./pub/skins/\$Skin"        => "$PubDirUrl/skins/\$Skin",
        "$FarmD/pub/skins/\$Skin" => "$FarmPubDirUrl/skins/\$Skin"));

    $IsTemplateLoaded = 0;
    foreach((array)$skin as $sfmt) {
        $Skin = FmtPageName($sfmt, $pagename);
         foreach($SkinLibDirs as $dirfmt => $urlfmt) {
            $SkinDir = FmtPageName($dirfmt, $pagename);
            if (is_dir($SkinDir)) {
                $SkinDirUrl = FmtPageName($urlfmt, $pagename);
                if (file_exists("$SkinDir/$Skin.php"))
                    include_once("$SkinDir/$Skin.php");
                else if (file_exists("$SkinDir/skin.php"))
                    include_once("$SkinDir/skin.php");
                if ($IsTemplateLoaded) return;
                if (file_exists("$SkinDir/$Skin.tmpl"))
                    LoadPageTemplate($pagename, "$SkinDir/$Skin.tmpl");
                    if ($IsTemplateLoaded) return;
                else if (file_exists("$SkinDir/skin.tmpl"))
                    LoadPageTemplate($pagename, "$SkinDir/skin.tmpl");
                    if ($IsTemplateLoaded) return;
                else if (($dh = opendir($SkinDir))) {
                    while (($fname = readdir($dh)) !== false) {
                        if (substr($fname, -5) != '.tmpl') continue;
                        if ($IsTemplateLoaded)
                            Abort("?unable to find unique template in $SkinDir");
                        LoadPageTemplate($pagename, "$SkinDir/$fname");
                     }
                     closedir($dh);
                     if ($IsTemplateLoaded) return;
                }
            }
        }
    }
    if (!is_dir($SkinDir)) {
            unset($Skin);
        Abort("?unable to find skin from list ".implode(' ',(array)$skin));
    }
    if (!$IsTemplateLoaded) Abort("Unable to load $Skin template");
}