// preloaded image object
var o;

// ajax object
var req;

// hero image
var show;

// transition timer
var timer;

// transition checker (for completeness)
var t2;

// xml request array
var itemHash = new Array();
var items = new Array();

// image folder
var section='portfolio';

// transition time gradation in ms
var fadeInt=50;

// transition interval
var fadePct=.05;

var rows = 6;
var cols = 6;



function iebs(){
	var agt      = navigator.userAgent.toLowerCase();
	var appVer   = navigator.appVersion.toLowerCase();
	var is_minor = parseFloat(appVer);
	var is_major = parseInt(is_minor);
	var iePos  = appVer.indexOf('msie');
	if (iePos !=-1) {
    is_minor = parseFloat(appVer.substring(iePos+5,appVer.indexOf(';',iePos)))
    is_major = parseInt(is_minor);
	}
 	var is_ie   = (iePos!=-1);

	var ar = document.getElementById('thumbs').getElementsByTagName('img');
	for(var i=0;i<ar.length;i++){
		if(is_ie){
			ar[i].onmouseover = function(){this.style.filter='alpha(opacity=100)'};
			ar[i].onmouseout = function(){this.style.filter='alpha(opacity=30)'};
		}
		ar[i].onclick = function(){showIt(this)};
		ar[i].alt = 'click for larger image';
		ar[i].id = i;
	}

	var sets = Math.ceil(ar.length/(rows*cols));

	var ar = document.getElementById('gal-nav').getElementsByTagName('a');
	for(i=0;i<sets;i++){
		ar[i].style.display = 'block';
		ar[i].onclick = function(){this.blur();doGalNav(parseInt(this.id.replace('set','')))};
	}
	ar[0].className = 'curr';

	if(is_ie){
		document.getElementById('item-info').style.top='153px';
	}
}

function loadXMLDoc() {
    var k = new Date();
    xmlurl = './xml/'+section+'.xml?oc=' + k.getTime();

    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", xmlurl, true);
        req.send(null);
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET",xmlurl ,true);
            req.send();
        }
    }
}


function processReqChange() {
  if (req.readyState == 4) {
    if (req.status == 200) {
			items = req.responseXML.getElementsByTagName('item');
			for(var i=0;i<items.length;i++){
				itemHash[items[i].getElementsByTagName('file')[0].firstChild.nodeValue] = i;
			}
			show.style.opacity=1;
			updateItem(0);
			document.getElementById('nav').style.display = 'block';
			document.getElementById('thumbs').style.display = 'block';
			document.getElementById('gal-nav').style.display = 'block';
    }
    else{
      // for safari and opera
      if(req.status != 304) {
        alert("There was a problem retrieving the XML data:\n" + req.status + "\n" + req.statusText);
      }
    }
  }
}

function doGalNav(x){
	ar = document.getElementById('thumbs').getElementsByTagName('img');
	for(var i=0;i<ar.length;i++){
		if(i>=(x*rows*cols) && i<((x*rows*cols)+(rows*cols))){
			ar[i].parentNode.style.display = 'block';
		}
		else{
			ar[i].parentNode.style.display = 'none';
		}
	}
	ar = document.getElementById('gal-nav').getElementsByTagName('a');
	for(i=0;i<ar.length;i++){
		ar[i].className='';
	}
	ar[x].className='curr';
}


function updateItem(itm){
	var j = items[itm];
	var f = j.getElementsByTagName('file')[0].firstChild.nodeValue;
  var k = new Date();

	o = new Image();
	o.src = 'images/'+section+'/'+f+'?oc='+k.getTime();
	//o.onload = (show.className=='ajax') ? checkImg : function(){t2=setInterval(checkImg,(fadeInt*fadePct*1.5))};
	o.onload = checkImg;

	var ar = new Array('title','material','dimensions','year','price');

	for(var i=0;i<ar.length;i++){
		var el=document.getElementById(ar[i]);
		var dt=document.getElementById(ar[i]+'-dt');
		var tags=j.getElementsByTagName(ar[i]);
		var val=(tags.length && tags[0].childNodes.length) ? tags[0].firstChild.nodeValue : '';

		if(el){
			if(val != ''){
				el.style.display='block';
				if(dt){dt.style.display='block'};
				el.innerHTML=val;
			}
			else{
				el.style.display='none';
				if(dt){dt.style.display='none'};
			}
		}
	}
	ar = document.getElementById('thumbs').getElementsByTagName('img');
	for(var i=0;i<ar.length;i++){
		if(ar[i].src.indexOf(f)!=-1){
			ar[i].className = 'curr';
			var p = (i==0) ? 0 : i-1;
			document.getElementById('prev').onclick = function(){this.blur();doNav(ar[p].src);doGalNav(Math.floor(p/(rows*cols)));return false}
			var n = (i==ar.length-1) ? (ar.length-1) : i+1;
			document.getElementById('next').onclick = function(){this.blur();doNav(ar[n].src);doGalNav(Math.floor(n/(rows*cols)));return false}
		}
		else{
			ar[i].className = '';
		}
	}
}


function init(){
	show=document.getElementById('show');
	loadXMLDoc();
	iebs();
}


function preNav(){
	//if(show.style.opacity>0 && show.style.opacity<1+fadePct){
	//	clearInterval(t2);
	//	clearInterval(timer);
	//	show.style.opacity=1;
	//}
	//timer=setInterval("fade(1)", fadeInt);
}


function showIt(o){
	preNav();
	var n = o.src.replace('/thumbs','');
	var ar = n.split('/');
	updateItem(itemHash[ar[ar.length-1]]);
}

function fade(x){
	if(show.style.opacity>-.1 && show.style.opacity<(1+fadePct)){
		show.style.opacity-=(fadePct*x);
	}
	else{
		clearInterval(timer);
		if(x==-1){
			show.style.opacity=1;
			clearInterval(t2);
		}
		else{
			show.className='invisible';
		}
	}
}

function doNav(s){
	preNav();
	s = s.replace('/thumbs','');
	var ar = s.split('/');
	updateItem(itemHash[ar[ar.length-1]]);
}

function checkImg(){
	show.className='';
 	show.src=o.src;
	show.style.opacity=1;

	//if((show.className=='ajax')){
	//	show.className='';
	//	show.src=o.src;
	//}
	//else{
 	//	if(show.className=='invisible'){
	//		show.className='';
 	//		show.src=o.src;
	// 		show.style.opacity=0;
 	//		show.onload = function(){timer=setInterval("fade(-1)", fadeInt/5)};
	//	}
 	//}
}

function doLang(l){
	if(doLang.arguments.length>0){
	  document.cookie = 'lang='+l+';expires='+cookieTime();
	}
  var lang = document.cookie.substr(document.cookie.indexOf('lang=')+5,7);
  el = document.getElementById('content');
  el.className = lang;
	return false;
}

function cookieTime(){
  var now = new Date();
  var exp = new Date();
  var x   = Date.parse(now) + 30*24*60*60*1000;
  exp.setTime(x);
  str = exp.toUTCString();
  re = '/(\d\d)\s(\w\w\w)\s\d\d(\d\d))/';
  return str.replace(re,"$1-$2-$3");
}
