var backarray = [];

$(document).ready(function() {
    
    backArray = [$('#ban_fore'),$('#ban_fore2'),$('#ban_middle'),$('#ban_middle2'),$('#ban_back'),$('#ban_back2')];
    
    var scrollInterval = null;

    $('.galleryRow .thumbnail').hover(
        function (){ $(this).css({'borderStyle':'dotted','borderColor':'#fff','borderWidth':'10px 0','zIndex':100,'top':-10}); },
        function (){ $(this).css({'border':0,'zIndex':0,'top':0}); }
    );
    
    $('.galleryColumn .thumbnail').hover(
        function (){ $(this).css({'borderStyle':'dotted','borderColor':'#fff','borderWidth':'0 10px','zIndex':100,'left':-10}); },
        function (){ $(this).css({'border':0,'zIndex':0,'left':0}); }
    );

    if ($('.galleryLink')){
        $('.galleryLink h3').css('opacity',0.9);
        $('.galleryLink div').css('opacity',0.7);
        $('.galleryLink').hover(
            function(){ $(this).find('div').animate({'bottom':0}); },
            function(){ $(this).find('div').animate({'bottom':-50}); }
        );
    }
    
/**********************************/
/******** VIDEO SECTION ***********/
    if ($('#scrollArea')){
        $('.scrollDown').mousedown(
            function(){
                clearInterval(scrollInterval);
                scrollInterval = setInterval(
                    function(){
                        var vgal = $('#vidgallery');
                        if (vgal.find('div:last')[0].offsetTop > vgal.height() - 95){
                            vgal.find('div').each(
                                function(){ $(this).css('top',this.offsetTop - 10); }
                            );
                        }
                    },10);
            }
        );
        $('.scrollUp').mousedown(
            function(){
                clearInterval(scrollInterval);
                scrollInterval = setInterval(
                    function(){
                        var vgal = $('#vidgallery');
                        if (vgal.find('div:first')[0].offsetTop < 0){
                            vgal.find('div').each(
                                function(){ $(this).css('top',this.offsetTop + 10); }
                            );
                        }
                    },10);
            }
        );
        $('.scrollDown, .scrollUp').mouseout( function(){ clearInterval(scrollInterval); } );
    }
    if ($('#vidgallery')){
        var vimeoUserName = "user284970";
        var myVimeoCallback = "showThumbs";
        var url = "http://vimeo.com/api/" + vimeoUserName + "/clips/js?callback=" + myVimeoCallback;
        var headItems = $("head script").each( function(){ if (this.src == url) this.parentNode.removeChild(this); } );
        var js = document.createElement("script");
        js.setAttribute("language", "JavaScript");
        js.setAttribute("type", "text/javascript");
        js.setAttribute("src", url);
        $("head")[0].appendChild(js);
    }
    
/**********************************/
/********* BLOG SECTION ***********/
    if($('#monthSlider')){
        var months = [],
            showArray = [];
        $('#sliderArea').css('display','block');
        $('#monthSlider').find('li').each(
            function(){
                var rel = $(this).attr('rel').split('#');
                var percentage = parseFloat(rel[0]);
                var newLeft = $('#monthSlider').width() * percentage;
                
                months.push(parseInt(newLeft));
                showArray.push(rel[2]);

                var numberPosts = (parseInt($(this).html()) == 1) ? '1 post' : parseInt($(this).html())+' posts';

                var month = $('<a class="month" href="blog.html?month='+rel[2]+'"></a>');
                month.html('Viewing '+rel[1]+' '+numberPosts);
                
                $('<div class="monthMarker"></div>').css('left',newLeft).append(month).appendTo('#monthSlider');
                $(this).remove();
            }
        );
        $('<div id="monthSliderKnob"></div>').html('D<br />R<br />A<br />G').mousedown(
            function(e){
                var slider = $(this);
                var sliderBack = $(this).parents();
                var sliderLimit = $(this).parents().width() - slider.width();
                var sliderPos = findPos(sliderBack[0]);
                document.onselectstart = function(){ return false; }
                document.onmousedown = function(){ return false; }
                
                var oldClosest = 0;
                
                $('#monthSlider').mousemove(
                    function(e){
                        var newPos = constrain(e.clientX - sliderPos[0] - (slider.width() / 2), 0, sliderLimit);
                        
                        slider.css('left', newPos);
                        var closest = findClosest(months,newPos);
                        if (oldClosest != closest[0]){
                            oldClosest = closest[0];
                            if (closest[0] == 0){
                                $('.blogpost').show();
                                $('.blogview').html('Viewing all posts');
                            }
                            else {
                                $('.blogpost').hide();
                                $('.'+showArray[closest[0]]).show();
                                $('.blogview').html($($('.month')[closest[0]]).html());
                            }
                        }
                    }
                );
            }
        )
        .appendTo($('#monthSlider'));

        $(document).mouseup(
            function(e){
                $('#monthSlider').unbind('mousemove');
                document.onselectstart = null;
                document.onmousedown = null;
            }
        );
    }

    $('.eventdiv').hover(
        function(){ $(this).css('backgroundColor','#391113'); },
        function(){ $(this).css('backgroundColor','#000'); }
    );

    scrollBanner();
    
    var treeImg = new Array(),
        treeLoaded = 0,
        logo = $('#logo'),
        logoPos = [logo.position().left + 45,logo.position().top + 50],
        lastLogo = 0;

    for (var t in treeSrc){
        treeImg[t] = $('<img src='+treeSrc[t]+' />');
        treeImg[t].css('display','none');
        treeImg[t].load(function (){
            treeLoaded++;
            if (treeLoaded == treeSrc.length){
                $('#logoload,#loadcount').hide();
                for(var t in treeImg) treeImg[t].css('display','block');
                $(document).mousemove(
                    function(e){
                        var currentPos = getHypot(e.clientX - logoPos[0],e.clientY - logoPos[1]);
                        var currentLogo = Math.floor(currentPos / 20);
                        if (currentLogo != lastLogo && currentLogo < treeImg.length){
                            treeImg[lastLogo].remove();
                            lastLogo = (currentLogo > treeImg.length - 1) ? treeImg.length - 1 : currentLogo;
                            logo.append(treeImg[lastLogo]);
                        }
                    }
                );
            }
            else $('#loadcount').html(treeLoaded+"\\"+treeSrc.length);
        });
    }

});

function getHypot(x,y){ return Math.abs(Math.floor(Math.sqrt((x*x)+(y*y)))); }

function scrollBanner(ground){
    if (!ground) ground = 2;
    for(var b in backArray){
        if (b < ground){
            var newLeft = parseInt(backArray[b].css('left'));
            newLeft = (newLeft < -1000) ? 1000 : newLeft - 1;
            backArray[b].css({'left':newLeft});
        }
    }
    ground = (ground == 8) ? 2 : ground + 2;
    bannerTimeout = setTimeout(function(){scrollBanner(ground);},41);
}

/////////////////////////////////
// COOKIES
/////////////////////////////////
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/////////////////////////////////
// AJAX
/////////////////////////////////
function createXMLHttp(){
    var xmlHttp;
    try { xmlHttp = new XMLHttpRequest();}
    catch(e){
        var XmlHttpVersions = new Array('MSXML2.XMLHTTP.6.0',
                                        'MSXML2.XMLHTTP.5.0',
                                        'MSXML2.XMLHTTP.4.0',
                                        'MSXML2.XMLHTTP.3.0',
                                        'MSXML2.XMLHTTP',
                                        'Microsoft.XMLHTTP');
        
        for (i = 0; i < XmlHttpVersions.length && !xmlHttp; i++){
            try{ xmlHttp = new ActiveXObject(XmlHttpVersions[i]); }
            catch(e) {}
        }
    }
    if (!xmlHttp) alert("Error creating Ajax with current browser");
    else  return xmlHttp;
}

function load(page){
    var ajax_request = createXMLHttp();
    if (ajax_request){
        var url = page;
        try {
            ajax_request.onreadystatechange = function (){                
                if (page == "home.php"){
                    document.getElementById('page').className = "pagehome";
                    content.innerHTML = "<h1 style='margin-top:120px;'>LOADING...</h1>";
                }
                else {
                    document.getElementById('page').className = "pagenormal";
                    content.innerHTML = "<div style=\"text-align:center;\"><h1>LOADING</h1><br /><img src=\"images/loader.gif\" alt=\"Loading...\" /></div>";
                }
                hideSplash();
                if (ajax_request.readyState == 4 && (ajax_request.status==200 || window.location.href.indexOf("http")==-1)){
                    content.innerHTML = ajax_request.responseText;
                    populateGallery();
                    loadVideos();
                    shrinkTimeout = null;
                }
            }
            var bustcache=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
            ajax_request.open('GET',url+bustcache, true);
            ajax_request.send(null);
        }
        catch (e){ alert("Error connecting to server:\n"+e.toString()); }
    }
}

function loadVideoCaption(vid){
    var ajax_request = createXMLHttp();
    if (ajax_request){
        var url = 'videocaption.php?vid='+vid;
        try {
            ajax_request.onreadystatechange = function (){ document.getElementById('vidcaption').innerHTML = ajax_request.responseText; }
            var bustcache=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime();
            ajax_request.open('GET',url+bustcache, true);
            ajax_request.send(null);
        }
        catch (e){ alert("Error connecting to server:\n"+e.toString()); }
    }
}

/////////////////////
// admin functions
/////////////////////

function addPic(newVal){
    document.getElementById('attachedpics').value += newVal;
}

function attachPicture(){
    var attachvalue = document.getElementById('attachpics');
    var attachdiv = document.getElementById('attachedpics');
    var attachids = document.getElementById('attachid');
    if (checkID(attachvalue.value,attachids.value)){
        attachids.value += ","+attachvalue.value;

        var newpic = document.createElement('div');
        var newimg = document.createElement('img');
        
        newimg.src = "pictures/thumbs/"+attachvalue.value+".jpg";
        
        newpic.appendChild(newimg);
        newpic.innerHTML += "<br /><a style=\"color:#000;\" href=\"#\" onclick=\"removeImg(this,"+attachvalue.value+");return false;\">Remove</a>";

        attachdiv.appendChild(newpic);
    }
}

function attachBlog(){
    var ab = document.getElementById('attachedblogs');
    var attachblog = document.getElementById('attachblog');
    var attachblogid = document.getElementById('attachblogid');
    var blogid = attachblog.value;
    var blogtitle = document.getElementById(blogid);
    
    ab.innerHTML += "<div><a href=\"login.php?blog=1&edit="+blogid+"\">"+blogtitle.innerHTML+"</a> - <a href=\"#\" onclick=\"removeBlog(this,"+blogid+");return false;\">Remove</a></div>";
    attachblogid.value += ","+blogid;
}

function removeBlog(whichone,va){
    var remBlog = whichone.parentNode;
    remBlog.parentNode.removeChild(remBlog);
    var attachblogid = document.getElementById('attachblogid');
    
    var varsarray = attachblogid.value.split(",");
    for (var v in varsarray){
        if (varsarray[v] == va){
            varsarray[v] = "";
        }
    }
    attachblogid.value = varsarray.join(",");
}

function checkID(va,vars){
    var varsarray = vars.split(",");
    for (var v in varsarray){
        if (varsarray[v] == va) return false;
    }
    return true;
}

function removeImg(thisone,va){
    var picdiv = thisone.parentNode;
    picdiv.parentNode.removeChild(picdiv);
    var attachids = document.getElementById('attachid');
    
    var varsarray = attachids.value.split(",");
    for (var v in varsarray){
        if (varsarray[v] == va) varsarray[v] = "";
    }
    attachids.value = varsarray.join(",");
}

function loadEvent(id){
    var ajax_request = createXMLHttp();
    if (ajax_request){
        var url = "includes/events.php?id="+id;
        try {
            ajax_request.onreadystatechange = function (){
                document.getElementById('leftcolumn').innerHTML = ajax_request.responseText;
            }
            var bustcache = '&'+new Date().getTime();
            ajax_request.open('GET',url+bustcache, true);
            ajax_request.send(null);
        }
        catch (e){
            alert("Error connecting to server:\n"+e.toString());
        }
    }
}

/////////////////////////////
// VIDEO STUFF
/////////////////////////////
function highlightThisThumb(whichone){
    var top = parseInt($(whichone).css('top'));
    $(whichone).css({'border':'2px solid #a00','zIndex':100,'left':0,'top':top - 2});
}

function unHighlightThisThumb(whichone){
    var top = parseInt($(whichone).css('top'));
    $(whichone).css({'border':0,'zIndex':0,'left':2,'top':top + 2});
}

function showThumbs(stuff) {
    var galDiv = $('#vidgallery');
    galDiv.html('');
    var p = 1;
    for(var i in stuff) {
        var vid = stuff[i].url.split('/')[stuff[i].url.split('/').length - 1];
        var pos = i * 95;
        galDiv.append('<div class="thumbnail" onmouseover="highlightThisThumb(this);" onmouseout="unHighlightThisThumb(this);" style="position:absolute;top:'+pos+'px;left:2px;background:url(\''+stuff[i].thumbnail_medium+'\') no-repeat center center;"><img src="images/thumbnail_frame'+p+'v.gif" onclick="showVid('+vid+');"/></div>');
        p = (p > 2) ? 1 : p + 1;
    }
}

function showVid(id){
    loadVideoCaption(id);
    $('#thevid').html('<object type="application/x-shockwave-flash" width="400" height="300" data="http://vimeo.com/moogaloop.swf?clip_id='+id+'&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA"><param name="quality" value="best" /><param name="allowfullscreen" value="true" /><param name="scale" value="showAll" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id='+id+'&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=01AAEA" /></object>');
}

function loadVideos() {
    if (document.getElementById('vidgallery')){
    /*
        var vimeoUserName = "user284970";
        var myVimeoCallback = "showThumbs";
        var url = "http://vimeo.com/api/" + vimeoUserName + "/clips/js?callback=" + myVimeoCallback;
    
        var headItems = document.getElementsByTagName("head").item(0).childNodes;
        for(var h in headItems){
            if (headItems[h].tagName == "SCRIPT"){
                if (headItems[h].src == url){
                    headItems[h].parentNode.removeChild(headItems[h]);
                }
            }
        }

        var js = document.createElement("script");
        js.setAttribute("language", "JavaScript");
        js.setAttribute("type", "text/javascript");
        js.setAttribute("src", url);
        document.getElementsByTagName("head").item(0).appendChild(js);

    */
        var vimeoUserName = "user284970";
        var myVimeoCallback = "showThumbs";
        var url = "http://vimeo.com/api/" + vimeoUserName + "/clips/js?callback=" + myVimeoCallback;
        var headItems = $("head script").each( function(){ if (this.src == url) this.parentNode.removeChild(this); } );
        var js = document.createElement("script");
        js.setAttribute("language", "JavaScript");
        js.setAttribute("type", "text/javascript");
        js.setAttribute("src", url);
        $("head")[0].appendChild(js);
    
    }
}

function scrollVid(direction){
    try { clearTimeout(scrollTimeout); }
    catch (e) {}
    var vgal = document.getElementById('vidgallery');
    if ((vgal.childNodes[0].offsetTop < 0 && direction > 0) || (vgal.childNodes[vgal.childNodes.length - 1].offsetTop > 155 && direction < 0)){
        for (var v in vgal.childNodes){
            try { vgal.childNodes[v].style.top = (vgal.childNodes[v].offsetTop + direction) + 'px'; }
            catch (e){}
        }
    }
    scrollTimeout = setTimeout(function(){scrollVid(direction);},10);
}

function showMenu(themenu){
    var picmenu = document.getElementById('picturemenu');
    picmenu.style.top = parseInt(themenu.parentNode.offsetTop + 20) + 'px';
    picmenu.style.left = parseInt(themenu.parentNode.offsetLeft + themenu.offsetLeft) + 'px';
    picmenu.style.display = 'block';
}

function hideMenu(){
    hideTimeout = setTimeout(function(){document.getElementById('picturemenu').style.display = 'none';},500);
}

////////////////////////
// Send contact message
////////////////////////

function sendContact(){
    var ajax_request = createXMLHttp();
    if (ajax_request){
        var url = "includes/sendcontact.php";
        var name = document.getElementById('name').value;
        var email = document.getElementById('email').value;
        var subject = document.getElementById('subject').value;
        var emailcontent = document.getElementById('emailcontent').value;
        var query = "name="+name+"&email="+email+"&subject="+subject+"&emailcontent="+emailcontent;
        try {
            ajax_request.onreadystatechange = function (){
                if (ajax_request.readyState == 4 && (ajax_request.status==200 || window.location.href.indexOf("http")==-1)){
                    document.getElementById('contactmessage').innerHTML = ajax_request.responseText;
                }
            }
            var bustcache = '?'+new Date().getTime();
            ajax_request.open('POST',url+bustcache, true);
            ajax_request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            ajax_request.send(query);
        }
        catch (e){ alert("Error connecting to server:\n"+e.toString()); }
    }
}



/************ Helper Functions ***************/
function constrain(val, min, max){
    if (val > max) return max;
    else if (val < min) return min;
    return val;
}

function findPos(obj) {
	var curleft = curtop = 0;
	if (obj.offsetParent) {
        do { curleft += obj.offsetLeft; curtop += obj.offsetTop;}
        while (obj = obj.offsetParent);
    }
	return [curleft,curtop];
}

function findClosest(arr,val){
    var lastNumber = nextNumber = [0,500];
    var i = 0;
    while (i < arr.length){
        if (lastNumber[1] > Math.abs(arr[i] - val)) lastNumber = [i,Math.abs(arr[i] - val)];
        else{
            nextNumber = [i,Math.abs(arr[i] - val)];
            i = arr.length;
        }
        i++;
    }
    return (lastNumber[1] < nextNumber[1]) ? lastNumber : nextNumber;
}

Array.max = function( array ){ return Math.max.apply( Math, array ); };
Array.min = function( array ){ return Math.min.apply( Math, array ); };