var IMAGE_BASE_NAMES = new Array("home", "services", "portfolio", "links", "contact");

window.onload = function() {
    preloadImages();
    setupLanguageControls();
    setupMenu();
}

function preloadImages() {
    var lang;
    var location = new String(window.location);
    if ( location.match("/en/") ) {
        lang = "en";
    } else if ( location.match("/pl/") ) {
        lang = "pl";
    }
    
    for ( var i=0; i<IMAGE_BASE_NAMES.length; i++ ) {
        var img1 = new Image();
        img1.src = "../graphics/" + IMAGE_BASE_NAMES[i] + "_1_" + lang + ".gif";
        var img2 = new Image();
        img2.src = "../graphics/" + IMAGE_BASE_NAMES[i] + "_2_" + lang + ".gif";
        var img3 = new Image();
        img3.src = "../graphics/" + IMAGE_BASE_NAMES[i] + "_3_" + lang + ".gif";
    }
}

function setupLanguageControls() {
    var languageButtons = getElementById("flags").getElementsByTagName("a");
    for ( var i=0; i<languageButtons.length; i++ ) {
        languageButtons[i].onclick = handleLanguageButtonClicked;
    }    
}

function handleLanguageButtonClicked( event ) {
    var lang = getEventTarget( event ).parentNode.id.substring( "lang-".length );
    var location = new String(window.location);
    if ( location.match("/en/") && lang != "en" ) {
        window.location = location.replace( "/en/", "/pl/" ); 
    } else if ( location.match("/pl/") && lang != "pl" ) {
        window.location = location.replace( "/pl/", "/en/" ); 
    }
    setCookie( "lang", lang, 30 );
    return false;
}   

function setupMenu() {
    var menuItems = getElementById("menu").getElementsByTagName("a");
    var location = new String(window.location);
    for ( var i=0; i<menuItems.length; i++ ) {
        if ( location.match( menuItems[i].href ) ) {
            menuItems[i].className = menuItems[i].className + "-selected";
            break;
        }
    }
}

function showImageWindow( fileName ) {
    var windowSettings = 'toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,'
    
    var w =  980;
    var h = 650;
    
    var x = (screen.availWidth-w)/2;
    var y = (screen.availHeight-h)/2;
    var win = window.open( '','', windowSettings+'width='+w+',height='+h+',top='+y+',left='+x );
    
    win.document.write('<html><head><title>Image</title>');
    win.document.write('<link rel="stylesheet" href="../image.css">');
    win.document.write('</head><body>');
    win.document.write('<div>');
    win.document.write('<a href="" onclick="self.close(); return false"><img src="../graphics/' + fileName + '"></a>');
    win.document.write('<p>Click on the image to close the window</p>');
    win.document.write('</div>');
    win.document.write('</body></html>');
    win.document.close();
    win.focus();
}

function writeEmailAddress() {
    document.write( '<a class="external" h'+'ref="ma'+'ilto:gr'+'zegorz.holdy'+'s@in'+'sight'+'machines.com">grz'+'egorz.hol'+'dys@ins'+'ight'+'machines.c'+'om</a>' );
}


//*********************************************
//************ UTILITY METHODS ****************
//*********************************************
function getElementById( id ) {
    return document.getElementById( id );
}

function getElementsByTagName( name ) {
    return document.getElementsByTagName( name );
}

function getElementsByClass( className ) {
    var elementArray = new Array();
    var matchedArray = new Array();

    if (document.all) {
        elementArray = document.all;
    } else {
        elementArray = document.getElementsByTagName("*");
    }

    var pattern = new RegExp("(^| )" + className + "( |$)");
    for ( var i=0; i<elementArray.length; i++ ) {
        if (pattern.test(elementArray[i].className)) {
            matchedArray[matchedArray.length] = elementArray[i];
        }
    }

    return matchedArray;
}

function getElementsWithMatchingID( id ) {
    var elementArray = new Array();
    var matchedArray = new Array();

    if (document.all) {
        elementArray = document.all;
    } else {
        elementArray = document.getElementsByTagName("*");
    }

    var pattern = new RegExp(id);
    for ( var i=0; i<elementArray.length; i++ ) {
        if (pattern.test( elementArray[i].id )) {
            matchedArray[matchedArray.length] = elementArray[i];
        }
    }

    return matchedArray;
}

function getEventTarget(event) {
    if ( typeof event == "undefined" ) event = window.event;
    
    var targetElement = null;

    if (typeof event.target != "undefined") {
        targetElement = event.target;
    } else {
        targetElement = event.srcElement;
    }

    while (targetElement.nodeType == 3 && targetElement.parentNode != null) {
        targetElement = targetElement.parentNode;
    }

    return targetElement;
}

// Adapted from http://www.w3schools.com/js/js_cookies.asp
function setCookie( c_name, value, expiredays ) {
    var exdate = new Date();
    exdate.setDate( exdate.getDate()+expiredays );
    document.cookie = c_name+ "=" +escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name) {
    if ( document.cookie.length > 0 ) {
        c_start = document.cookie.indexOf(c_name + "=");
        if ( c_start != -1 ) { 
            c_start = c_start + c_name.length+1; 
            c_end = document.cookie.indexOf(";",c_start);
            if ( c_end == -1 ) c_end = document.cookie.length;
            return unescape( document.cookie.substring(c_start,c_end) );
        } 
    }
    return "";
}


