var previewImg;
var title;
var ajaxLoad;

window.onload = function() {
	/* Preload images */
	if (document.images) {
		var img1 = new Image;
		img1.src = 'img/preview-background.png';
		var img2 = new Image;
		img2.src = 'img/loading.gif';
		var img3 = new Image;
		img3.src = 'img/close.gif';
	}
}

NiftyLoad = function() {
	/* Nifty function */
	Nifty("div.testimonial");
	Nifty("div.testimonial p.body", "small");

    Nifty("div.servInfo");

    Nifty("div.serviceAlert");
    Nifty("div.serviceAlert p.body", "small");
    
    //Nifty("div.leftThumb", "small transparent");
    //Nifty("div.rightThumb", "small transparent");
}

function servicesTab(tabName) {
    if (tabName == 'Skills' || tabName == 'Services') {
        ajaxLoad = getHttpObj();
        if (ajaxLoad == null) {
            return false;
        }

        var content = getElement('ajaxLoad');
        content.innerHTML = '<p id="tabLoading">Loading ' + tabName + '...</p>' + content.innerHTML;
        
        if (tabName == 'Services') {
            getElement('skills').src   = 'img/skills.png';
            getElement('services').src = 'img/services-selected.png';

        } else {
            getElement('skills').src   = 'img/skills-selected.png';
            getElement('services').src = 'img/services.png';
        }

        ajaxLoad.onreadystatechange = function() {
            if (ajaxLoad.readyState == 4) {
                if (ajaxLoad.status == 200) {
                    content.innerHTML = ajaxLoad.responseText;
                }              
            }
        }
        ajaxLoad.open('GET', tabName.toLowerCase() + '.php?ajax=1&nocache=' + Math.random(), true);
        ajaxLoad.send(null);
    }

    return;
}

function getElement(id) {
    var element;
    if (element = document.getElementById(id)) {
        return element;
    }
    return false;
}

function getPosition(element)
{
    var fromLeft = fromTop = 0;
    if (element.offsetParent) {
        do {
            fromLeft += element.offsetLeft;
            fromTop  += element.offsetTop;
        } while (element = element.offsetParent);
    }
    return [fromTop, fromLeft];
}

function previewSite(site) {

	/* Make sure a valid site is sent to function */
	var validSites = new Array('multimanage', 'minimerc', 'insight', 'thehyp');
	if (validSites.indexOf(site) == -1) {
		return false;
	}

	previewSrc = 'img/sites/' + site + '.jpg';

	/* Display loading popup */
	if (!document.getElementById('loadingPopup')) {
		loadingPopup = document.createElement('div');
		loadingPopup.id = 'loadingPopup';
		loadingPopup.innerHTML = '<img src="img/loading.gif" alt="" /> Loading...';
		document.body.appendChild(loadingPopup);
	}

	/* Preload preview image */
	if (document.images) {
		previewImg = new Image;
		previewImg.src = previewSrc;
	}

	/* Create a timed loop to run the displayPreview function */	
	ti = setInterval("displayPreview('" +site+ "');", 500);

}

function displayPreview(site) {

	/* Check if image has loaded - return false if not */
	if (previewImg.complete == 0) {
		return false;
	}

	/* Remove the timed loop */
	clearInterval(ti);

	var siteInfo = new Array;

	switch(site) {
	case "minimerc":
		siteInfo[0] = 1;
		siteInfo[1] = 'MiniMerc';
		siteInfo[2] = 'http://www.minimerc.co.uk';
		break; 
	case "multimanage":
		siteInfo[0] = 2;
		siteInfo[1] = 'MultiManage';
		siteInfo[2] = 'http://mm.multisrc.org/';
		break;
	case "thehyp":
		siteInfo[0] = 3;
		siteInfo[1] = 'Thehyp.net';
		siteInfo[2] = 'http://www.hypboard.com/thehyp/index.php';
		break;
	case "insight":
		siteInfo[0] = 4;
		siteInfo[1] = 'Insight UK';
		siteInfo[2] = 'http://uk.insight.com';
		break;
	}

	if (!document.getElementById('previewPopup')) {
		previewPopup = document.createElement('div');
		previewPopup.id = 'previewPopup';
		previewPopup.innerHTML = '<img src="' +previewImg.src+ '" alt="' + siteInfo[1] + ' preview" class="preview" /><p><a href="' + siteInfo[2] + '" title="Visit ' + siteInfo[1] + ' website"><img src="img/visit-website.gif" alt="" /></a> <a href="details.php?site=' + siteInfo[0] + '" title="More Details"><img src="img/more-details.gif" alt="" /></a></p><p class="right"><img src="img/close.gif" alt="Close" class="close" onclick="removePreviewPopup();" /></p>';
		document.body.appendChild(previewPopup);
	}
	
	document.getElementById('previewPopup').style.display = 'block';
	shiftOpacity('previewPopup', 200);

	/* Clear loading image */
	removeLoadingPopup();
	return false;
}

function removeLoadingPopup() {
	var loadingPopup = document.getElementById('loadingPopup');
	document.body.removeChild(loadingPopup);
	return;
}

function removePreviewPopup() {
	shiftOpacity('previewPopup', 200);
	var previewPopup = document.getElementById('previewPopup');
	setTimeout("document.body.removeChild(previewPopup);", 700);
	return;	
}

function opacity(id, opacStart, opacEnd, millisec) {
    var speed = Math.round(millisec / 100);
    var timer = 0;

    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

function shiftOpacity(id, millisec) {
    if(document.getElementById(id).style.opacity == 0) {
        opacity(id, 0, 100, millisec);
    } else {
        opacity(id, 100, 0, millisec);
    }
} 

function slideThemes() {
	var colorsObj = document.getElementById('colors');
	if (colorsObj.style.display != 'block') {
		colorsObj.style.display = 'block';
	} else {
		colorsObj.style.display = 'none';
	}
}

function getHttpObj()
{
    var xmlHttp = null;
    try {
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}
