var setClassHandle="class";

var currentPage=0;
var selectedContent;
var selectedElement;
var selectedSubElement;
var selectedSubSubGroup;
var selectedSubSubElement;
var selectedSubSubSubElement;
var boldifiedElement;
var currentImageNumber;
var selectedNumber;

var languages=3;
var currentLanguage=langNum ? langNum : 2;
var currentLangName=langName ? langName : "en";
var langNameList=new Array(null, "fi", "en", "jp");

var blogPath="http://www.villekuvaja.com/saana_ja_olli/blog/index.php";
var blogPageId=1;

var loadInterval;
var loadCount=0;

function preloadImages() {

startLoadAnimation();

var paths=new Array(

"./images/fi/navi1.jpg",
"./images/fi/navi2.jpg",
"./images/fi/navi3.jpg",
"./images/fi/navi4.jpg",
"./images/fi/navi5.jpg",
"./images/fi/navi6.jpg",
"./images/fi/navi7.jpg",

"./images/fi/navi1_selected.jpg",
"./images/fi/navi2_selected.jpg",
"./images/fi/navi3_selected.jpg",
"./images/fi/navi4_selected.jpg",
"./images/fi/navi5_selected.jpg",
"./images/fi/navi6_selected.jpg",
"./images/fi/navi7_selected.jpg",



"./images/en/navi1.jpg",
"./images/en/navi2.jpg",
"./images/en/navi3.jpg",
"./images/en/navi4.jpg",
"./images/en/navi5.jpg",
"./images/en/navi6.jpg",
"./images/en/navi7.jpg", 

"./images/en/navi1_selected.jpg",
"./images/en/navi2_selected.jpg",
"./images/en/navi3_selected.jpg",
"./images/en/navi4_selected.jpg",
"./images/en/navi5_selected.jpg",
"./images/en/navi6_selected.jpg",
"./images/en/navi7_selected.jpg",             
         
         

"./images/saana_ja_olli_subnavi/fi/subnavi1.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi2.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi3.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi4.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi5.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi6.jpg",

"./images/saana_ja_olli_subnavi/fi/subnavi1_selected.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi2_selected.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi3_selected.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi4_selected.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi5_selected.jpg",
"./images/saana_ja_olli_subnavi/fi/subnavi6_selected.jpg",



"./images/saana_ja_olli_subnavi/en/subnavi1.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi2.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi3.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi4.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi5.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi6.jpg",

"./images/saana_ja_olli_subnavi/en/subnavi1_selected.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi2_selected.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi3_selected.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi4_selected.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi5_selected.jpg",
"./images/saana_ja_olli_subnavi/en/subnavi6_selected.jpg",



"./collections/en/the_story.jpg",
"./collections/en/gallery.jpg",
"./collections/en/products.jpg",

"./collections/en/the_story_selected.jpg",
"./collections/en/gallery_selected.jpg",
"./collections/en/products_selected.jpg",



"./collections/fi/the_story.jpg",
"./collections/fi/gallery.jpg",
"./collections/fi/products.jpg",

"./collections/fi/the_story_selected.jpg",
"./collections/fi/gallery_selected.jpg",
"./collections/fi/products_selected.jpg",         
         
         
             
"./images/older_posts.jpg",
"./images/newer_posts.jpg"

);



  for(var i=0; i<collections.length; i++) {
  paths.push(collections[i]['folder']+"/link.jpg");
  paths.push(collections[i]['folder']+"/link_selected.jpg");
  
    var j=1;
    while(collections[i]['name'+j]) {
    paths.push(collections[i]['folder']+"/sublink"+j+".jpg");
    paths.push(collections[i]['folder']+"/sublink"+j+"_selected.jpg");
    j++;
    }
  
  }

var img;

  for(var i=0; i<paths.length; i++) {
  img=new Image(1, 1);
  img.src=paths[i];
  img.alt="";
  }

}

//---

function startLoadAnimation() {

loadInterval=setInterval("animateLoad()", 500);

}

//---

function animateLoad() {

var length=document.images.length;
var loaded=0;

  for(var i=0; i<length; i++) {
  if(document.images.item(i).complete) loaded++;
  }

loaded/=length;
loaded*=100;
loaded=Math.round(loaded);

var bar=document.getElementById("bar");
bar.setAttribute("style", "width:"+loaded+"%;");

var percent=document.getElementById("percent");
percent.innerHTML=loaded+" %";

}

//---

function stopLoadAnimation() {
clearInterval(loadInterval);
}

//---

function init() {

document.getElementById("main").style.visibility="visible";
document.getElementById("loading").style.visibility="hidden";
document.getElementById("japaneseContent").style.display="none";

var i=0;

  while(document.getElementById("page"+i)) {
  
    if(i!=currentPage) {
    document.getElementById("page"+i).style.display="none";
    }
  
  i++;
  }

stopLoadAnimation();
loadSeparateImages();

// add blog
var blog=document.getElementById("blogFrame");
blog.setAttribute("src", blogPath+"?paged="+blogId+";");

}

//---

function loadSeparateImages() {

var list=new Array(

["img_passikuva", "./images/passikuva.jpg"],
["img_house", "./images/talo.jpg"],
["img_finland_map", "./images/finland_map.jpg"],
["img_europe_map", "./images/europe_map.jpg"],

["friend1", "./friends/werklig.jpg"],
["friend2", "./friends/turun_kirjekuoritehdas.jpg"],
["friend3", "./friends/unto_rautio.jpg"],
["friend4", "./friends/double_i.jpg"],
["friend5", "./friends/kioski.jpg"],

["yo_metsassa_thumb1", "./press/yo_metsassa_thumbs/thumb1.jpg", "imageStyle2"],
["yo_metsassa_thumb2", "./press/yo_metsassa_thumbs/thumb2.jpg", "imageStyle2"],
["yo_metsassa_thumb3", "./press/yo_metsassa_thumbs/thumb3.jpg", "imageStyle2"],
["yo_metsassa_thumb4", "./press/yo_metsassa_thumbs/thumb4.jpg", "imageStyle2"],
["yo_metsassa_thumb5", "./press/yo_metsassa_thumbs/thumb5.jpg", "imageStyle2"],
["yo_metsassa_thumb6", "./press/yo_metsassa_thumbs/thumb6.jpg", "imageStyle2"],
["yo_metsassa_thumb7", "./press/yo_metsassa_thumbs/thumb7.jpg", "imageStyle2"],
["yo_metsassa_thumb8", "./press/yo_metsassa_thumbs/thumb8.jpg", "imageStyle2"],
["yo_metsassa_thumb9", "./press/yo_metsassa_thumbs/thumb9.jpg", "imageStyle2"],
["yo_metsassa_thumb10", "./press/yo_metsassa_thumbs/thumb10.jpg", "imageStyle2"],
["yo_metsassa_thumb11", "./press/yo_metsassa_thumbs/thumb11.jpg", "imageStyle2"],
["yo_metsassa_thumb12", "./press/yo_metsassa_thumbs/thumb12.jpg", "imageStyle2"],
["yo_metsassa_thumb13", "./press/yo_metsassa_thumbs/thumb13.jpg", "imageStyle2"],
["yo_metsassa_thumb14", "./press/yo_metsassa_thumbs/thumb14.jpg", "imageStyle2"],
["yo_metsassa_thumb15", "./press/yo_metsassa_thumbs/thumb15.jpg", "imageStyle2"],
["yo_metsassa_thumb16", "./press/yo_metsassa_thumbs/thumb16.jpg", "imageStyle2"],
["yo_metsassa_thumb17", "./press/yo_metsassa_thumbs/thumb17.jpg", "imageStyle2"],
["yo_metsassa_thumb18", "./press/yo_metsassa_thumbs/thumb18.jpg", "imageStyle2"],
["yo_metsassa_thumb19", "./press/yo_metsassa_thumbs/thumb19.jpg", "imageStyle2"],
["yo_metsassa_thumb20", "./press/yo_metsassa_thumbs/thumb20.jpg", "imageStyle2"],
["yo_metsassa_thumb21", "./press/yo_metsassa_thumbs/thumb21.jpg", "imageStyle2"],

["press_thumb1", "./press/thumb1.jpg", "imageStyle2"],
["press_thumb2", "./press/thumb2.jpg", "imageStyle2"],
["press_thumb3", "./press/thumb3.jpg", "imageStyle2"],
["press_thumb4", "./press/thumb4.jpg", "imageStyle2"],
["press_thumb5", "./press/thumb5.jpg", "imageStyle2"]

);

  for(var i=0; i<list.length; i++) {
  addImageToElement(list[i]);
  }

}

//---

function page(num, link) {

  if(num!=currentPage) {
  
  hideSubNavi();
  
  link.innerHTML="<img src='images/"+currentLangName+"/navi"+num+"_selected.jpg'>";
  
    // change previous link
    var previousLink=document.getElementById("navi"+currentPage);
    
      if(previousLink) {
      previousLink.innerHTML="<img src='images/"+currentLangName+"/navi"+currentPage+".jpg'>";
      }
  
    // change page content
    var previousPageContent=document.getElementById("page"+currentPage);
    previousPageContent.style.display="none";
    
    var newPageContent=document.getElementById("page"+num);  
    newPageContent.style.display="inline-block";

  currentPage=num;

    // if page is saana ja olli
    if(num==1) {
    reset_saana_ja_olli();
    }

    // if page is collections
    if(num==2) {
    resetCollectionGallery();
    }

  showContentByLanguage();

  }

}

//---

function showContentByLanguage() {

var pageName="page"+currentPage;
var page=document.getElementById(pageName);

// show by language (pagename_content_number) or if language not needed (pagename_content)

    for(var i=1; i<=languages; i++) {
    var content=getElement(page, "id", pageName+"_content"+i);
    
      if(content) {
    
        if(i==currentLanguage) {
        content.style.display="inline-block";
        } else {
        content.style.display="none";
        }
      
      } else {
      content=getElement(page, "id", pageName+"_content");
      if(content) content.style.display="inline-block";
      }
   
    }

}

//---

function changeLang(num, link) {

link.innerHTML="<img src='images/lang"+num+"_selected.gif'>";

  if(currentLanguage!=num) {

  var previousLink=document.getElementById("lang"+currentLanguage);
  previousLink.innerHTML="<img src='images/lang"+currentLanguage+".gif'>";

  }
  
  if(currentLanguage==3 && num!=3) {
  hideJapaneseContent();
  }

// swap language folders

var langName1=currentLangName;
var langName2=langNameList[num];
var regex=new RegExp("\/"+langName1+"\/", "g");
var imgs=document.getElementsByTagName("img");
var str;
var i;

  for(i=0; i<imgs.length; i++) {
  imgs[i].src=imgs[i].src.replace(regex, "/"+langName2+"/");
  }

// swap language specific words

var words=document.getElementsByTagName("span");

  for(i=0; i<words.length; i++) {
  if(words[i].className==langName1) words[i].style.display="none";
  }
  
words=document.getElementsByTagName("span");

  for(i=0; i<words.length; i++) {
  if(words[i].className==langName2) words[i].style.display="inline";
  }
  
// finish

currentLanguage=num;
currentLangName=langNameList[num];
showContentByLanguage();

  // if page is saana ja olli
  if(currentPage==1) {
  hideSubContent();
  showSubContent(selectedNumber, selectedElement);
  }

}

//-----------------------------
// SAANA JA OLLI

function reset_saana_ja_olli() {

var pageName="page"+currentPage;

var target=document.getElementById(pageName);
var content=getElement(target, "id", pageName+"_content"+currentLanguage);

var i=1;
var element=getElement(content, "id", pageName+"_content"+i);
  
  while(element) {
  element.style.display="none";
  i++;
  element=getElement(content, "id", pageName+"_content"+i);
  }
  
var pageNavi=getElement(target, "className", "pageNavi");
var subnavi=getElement(pageNavi, "className", "subnavi");
var link=getElement(subnavi, "className", "subnaviLink");

hideSubContent();
showSubContent(1, link);

}

//-----------------------------
// SUBCONTENT

function showSubContent(num, link) {

var split;

  if(selectedElement) {
  selectify(selectedElement, false);
  }

  if(link) {
  selectify(link, true);
  }

  if(selectedContent) {
  selectedContent.style.display="none";
  }

var pageName="page"+currentPage;
var contentName="_content"+currentLanguage;
var target=document.getElementById(pageName);
var content=getElement(target, "id", pageName+contentName);
var contentPage=getElement(content, "id", pageName+contentName+"_page"+num);

contentPage.style.display="inline-block";

selectedNumber=num;
selectedContent=contentPage;
selectedElement=link;

}

//---

function hideSubContent() {

var i=1;
var pageName="page"+currentPage;
var contentName="_content"+currentLanguage;
var content=document.getElementById(pageName);
content=getElement(content, "id", pageName+contentName);
var element=getElement(content, "id", pageName+contentName+"_page"+i);
  
  while(element) {
  element.style.display="none";
  i++;
  element=getElement(content, "id", pageName+contentName+"_page"+i);
  }

}

//---

function hideSubNavi() {

  if(selectedElement) {
  selectify(selectedElement, false);
  selectedElement=null;
  }

  if(selectedSubElement) {
  selectedSubElement.style.display="none";
  selectedSubElement=null;
  }

  if(boldifiedElement) {
  boldifiedElement.style.fontWeight="normal";
  boldifiedElement=null;
  }  

  if(selectedSubSubGroup) {
  selectedSubSubGroup.style.display="none";
  }

}

//-----------------------------
// JAPANESE CONTENT

function showJapaneseContent(link) {

changeLang(3, link);
document.getElementById("content").style.display="none";
document.getElementById("navi").style.display="none";
document.getElementById("japaneseContent").style.display="inline";

}

//---

function hideJapaneseContent() {

document.getElementById("content").style.display="inline";
document.getElementById("navi").style.display="inline";
document.getElementById("japaneseContent").style.display="none";

}

//-----------------------------
// COLLECTIONS

function resetCollectionGallery() {

subnaviHolder

var links=document.getElementById("collectionLinks");
var target=getElement(links, "id", "subnaviHolder");
showCollectionSubNavi(target, 0);

target=getElement(target, "className", "sublinks");
target=getElement(target, "className", "collectionSubLinks")
var link=getElement(target, "className", "collectionSubLink");
showCollectionContent(link, 0, 1);

}

//---

function boldify(link) {

link.style.fontWeight="bold";

  if(boldifiedElement && link!=boldifiedElement) {
  boldifiedElement.style.fontWeight="normal";
  }

boldifiedElement=link;

}

//---

function selectify(link, bool) {

var split;

  if(bool) {
  split=link.innerHTML.split(".jpg");
  link.innerHTML=split[0]+"_selected.jpg"+split[1];
 
  } else {
  split=link.innerHTML.split("_selected.");
  link.innerHTML=split[0]+"."+split[1];
  }

}

//---

function showCollectionSubNavi(target, iter) {

// show selected element underline

var link;
var split;

  if(selectedElement) {
  selectify(selectedElement, false);
  selectedElement=null;
  }
  

link=getElement(target, "className", "subnaviLink");
selectify(link, true);
selectedElement=link;

// show element subnavi

  if(selectedSubElement) {
  selectedSubElement.style.display="none";
  }

var element=getElement(target, "className", "sublinks");
element.style.display="inline-block";
selectedSubElement=element;

}

//---

function showCollectionContent(link, iter, contentNum) {

// show subnavi

  if(selectedSubSubGroup) {
  selectedSubSubGroup.style.display="none";
  }
  
var subsublinks=getElement(link.parentNode, "className", "collectionSubSubLinks");
subsublinks.style.display="block";
selectedSubSubGroup=subsublinks;

  if(selectedSubSubElement) {
  selectify(selectedSubSubElement, false)
  }

selectify(link, true);
selectedSubSubElement=link;

var subSubLinks=getElement(link.parentNode, "className", "collectionSubSubLinks");
var galleryLink=getElement(subSubLinks, "id", "galleryLink"+iter);

showCollectionGallery(galleryLink, iter, contentNum, 0);

}

//---

function showCollectionStory(link, iter, contentNum) {

  if(selectedSubSubSubElement) {
  selectify(selectedSubSubSubElement, false);
  }

  if(link) {
  selectify(link, true);
  selectedSubSubSubElement=link;
  }

var target=document.getElementById("collectionsContent");
target.innerHTML=collections[iter]['story'+contentNum];

}

//---

function showCollectionGallery(link, iter, contentNum, imageNum) {

  if(link && selectedSubSubSubElement) {
  selectify(selectedSubSubSubElement, false);
  }

  if(link) {
  selectify(link, true);
  selectedSubSubSubElement=link;
  }

// find target

var target=document.getElementById("collectionsContent");
target.innerHTML="";
var images=collections[iter]["images"+contentNum];

// add gallery story

var galleryStory=collections[iter]["galleryStory"+contentNum];
var langName1=currentLangName;

  if(galleryStory.search("/"+langName1+"/")==-1) {

  var num= (currentLanguage==1) ? 2 : 1 ;
  var langName2=langNameList[num];
  var regex=new RegExp("\/"+langName2+"\/", "g");
  galleryStory=galleryStory.replace(regex, "/"+langName1+"/");
  
  }

  if(galleryStory) {
  target.innerHTML+=galleryStory;
  }

// add images

  for(var i=0; i<images.length; i++) {
 
  var imageFrame=document.createElement("div");
  target.appendChild(imageFrame);
  imageLoader(imageFrame, images[i], f);
  
  }
  
  function f(img, imgTarget) {
 
  imgTarget.setAttribute(setClassHandle, "galleryImageFrame");
  imgTarget.innerHTML="";
  imgTarget.appendChild(img); 
  
  }

// add photographer info

  var photographer=collections[iter]["photographer"+contentNum];

  if(photographer) {

  var info=document.createElement("div");
  target.appendChild(info);
  info.innerHTML=photographer;
  
  var words=document.getElementsByTagName("span");
  
    for(i=0; i<words.length; i++) {
    if(words[i].className==langNameList[0]) words[i].style.display="none";
    }
    
  words=document.getElementsByTagName("span");
  
    for(i=0; i<words.length; i++) {
    if(words[i].className==langNameList[1]) words[i].style.display="none";
    }  

  words=document.getElementsByTagName("span");
  
    for(i=0; i<words.length; i++) {
    if(words[i].className==currentLangName) words[i].style.display="inline";
    } 

  }

}

//---

function showCollectionProducts(link, iter, contentNum) {

  if(selectedSubSubSubElement) {
  selectify(selectedSubSubSubElement, false);
  }

  if(link) {
  selectify(link, true);
  selectedSubSubSubElement=link;
  }

var target=document.getElementById("collectionsContent");

  try {
  eval(collections[iter]['products'+contentNum]);
  } catch(e) {
  var action="none";
  }
  
  switch(action) {
  
    case "embedPDF":
    var PDF=new PDFObject({ url: value }).embed("collectionsContent");
    break;
    
    default:
    target.innerHTML=collections[iter]['products'+contentNum];
    break;

  }

}

//-----------------------------
// MAIL

function sendMail(form) {

var phpPath="php/mail.php";

var name=form.name.value;
var email=form.email.value;
var msg=form.message.value;
  
var feedback=getElement(form, "className", "feedback");  
  
  if(msg) {
  
  url=phpPath+"?action=sendMail&name="+name+"&email="+email+"&message="+msg;
  ajaxRequest(url);
  
    if(currentLanguage==1) {
    feedback.innerHTML="Viestisi on lähetetty.<br>Kiitos yhteydenotostasi!";
    
    } else if(currentLanguage==2) {
    feedback.innerHTML="Your message has been sent.<br>Thank you for contacting us!";
    }
  
  form.reset();
  }

}

//-----------------------------
// BLOG

function writeBlogNavi() {

var page=document.getElementById("page7");
var pagenavi=getElement(page, "className", "pageNavi");
var subnavi=getElement(pagenavi, "className", "subnavi");

subnavi.innerHTML="";

  if(blogPageId<6) {
  subnavi.innerHTML+="<a class='subnaviLink' onclick='navigateBlog(1);'><img src='./images/"+currentLangName+"/older_posts.jpg' class='subnaviLinkImage' alt='Older posts'></a><br>";
  }
  
  if(blogPageId>1) {
  subnavi.innerHTML+="<a class='subnaviLink' onclick='navigateBlog(-1);'><img src='./images/"+currentLangName+"/newer_posts.jpg' class='subnaviLinkImage' alt='Newer posts'></a><br>";
  }

}
       
//---      
       
function navigateBlog(direction) {

blogPageId+=direction;
writeBlogNavi();

var blogFrame=document.getElementById("blogFrame");
blogFrame.setAttribute("src", blogPath+"?paged="+blogPageId);

}       

//-----------------------------
// OTHER CONTENT

function thanks(parent) {

var thanks=getElement(parent, "className", "friendThanks");
var image=getElement(parent, "tagName", "A");

thanks.style.display="block";
thanks.style.top=(parent.offsetTop+parent.offsetHeight/2-thanks.offsetHeight/2)+"px";
thanks.style.left=(parent.offsetLeft+image.offsetWidth+50)+"px";

}

//---

function noThanks(parent) {

var thanks=getElement(parent, "className", "friendThanks");
thanks.style.display="none";

}
            
//-----------------------------
// USEFUL

function ajaxRequest(url, doAfter) {

  try {
  var obj=new XMLHttpRequest(); 
  } catch(e) {
  var obj=new ActiveXObject("Microsoft.XMLHTTP");
  }

try {
obj.overrideMimeType('text/xml');
} catch(e) {
}

obj.open("POST", url, true);

var b=false;

  obj.onreadystatechange=function() {

    try {
    
      if(doAfter && obj.status==200 && obj.responseXML && !b) {
      doAfter(obj.responseXML);
      b=true;
      }
    
    } catch(e) {
    }

  }

obj.send(null);

}

//---

function getElement(target, searchParam, searchValue) {

var found;

  for(var i=0; i<target.childNodes.length; i++){

    if(target.childNodes[i][searchParam]==searchValue) {
    found=target.childNodes[i];
    i=target.childNodes.length;
    }

	}           

return found;
}

//---

function imageLoader(target, path, f) {

var img=new Image();
img.src=path;
img.alt="";

var t=setInterval(check, 10);

  function check() {
  
    if(img.width>0) {
    done();
    clearInterval(t);
    }
  
  }

  function done() {

    if(f) {
    f(img, target);
    }

  }

}

//---

function addImage(target, path, className) {

var img=new Image();
img.src=path;
img.alt="";

  if(className) {
  img.setAttribute(setClassHandle, className); 
  }

target.appendChild(img);

}

//---

function addImageToElement(arr) {

element=document.getElementById(arr[0]);

  // apply image to element by id
  if(element) {
  
    if(arr[2]) {
    addImage(element, arr[1], arr[2]);
    } else {
    addImage(element, arr[1]);
    }   
  
  // apply image for all elements of given class
  } else {

  var body=document.getElementsByTagName("body")[0];
  var kids=body.getElementsByTagName("*");
  
    for(var i=0; i<kids.length; i++) {
  
      if(kids[i].className==arr[0] || kids[i].id==arr[0]) {
  
        if(arr[2]) {
        addImage(kids[i], arr[1], arr[2]);
        } else {
        addImage(kids[i], arr[1]);
        }    
  
      }
  
    }
  
  }  

}
