/*
Copyright © 2008 BBB Systems, LLC, All rights reserved
Uses JQuery and JQuery UI.  The MIT license is the chosen
license for JQuery scripts.  All code in this script that is
not related to JQuery is property of BBB Systems, LLC
*/

var navHistory = new Array( );
var curNavPoint = -1;

var ajaxEnabled = false;
var bgzDDEnabled = false;

window.js_initialized = false;
if( window.special_init){ window.load_function = special_init; }
else{ window.load_function = function( ){ init( ); } }
$(document).ready( window.load_function );
if(window.load_maps){ window.unload = function( ){ GUnload( ); } }

function init( ){
    if(window.js_initialized){ return; }
    window.js_initialized = true;
    if(!document.getElementsByTagName){ return; }
    if(ajaxEnabled){ ajaxCheck( ); }
    if(ajaxEnabled){
        initAjaxHelpers( );
    }

    initTopMenuLinks( );
    initInputButtons( );

    initA( );
    initEditors( );
    initObjects( );

    initJWPlayer( );

    if(window.load_maps){ loadGoogleMaps( ); }

    initColorbox( );
    loadCufonFonts( );
    initPortfolioThumbs( );
}

window.xmlInit = function( ){
    if(window.load_maps){ loadGoogleMaps( ); }
}

function initInputButtons( ){
    if(document.getElementsByTagName){
        var inputs = document.getElementsByTagName("input");
        for(var i = 0; i < inputs.length; i++){
            if((inputs[i].type == "submit" || inputs[i].type == "reset" || inputs[i].type == "button") && inputs[i].className == "button"){
                inputs[i].onmouseover = inputOver;
                inputs[i].onmouseout = inputOut;
            }
            else if(window.ActiveXObject && (inputs[i].type == 'checkbox' || inputs[i].type == 'radio')){
                inputs[i].style.border = '0px solid #ffffff';
                inputs[i].style.backgroundColor = 'transparent';
            }
        }
        var buttons = document.getElementsByTagName("button");
        for(var i = 0; i < buttons.length; i++){
            if((buttons[i].type == "submit" || buttons[i].type == "reset" || buttons[i].type == "button") && buttons[i].className == "button"){
                buttons[i].onmouseover = inputOver;
                buttons[i].onmouseout = inputOut;
            }
        }
    }
}

function initA( ){
    if(document.getElementsByTagName){
        var as = document.getElementsByTagName("a");
        for(var i = 0; i < as.length; i++){

            var hostnm = as[i].href.replace(/http(s)?\:\/\//, "");
            hostnm = hostnm.replace(/\/.*/, "");

            if(hostnm != window.location.hostname || as[i].href.match(/\/ad\.\php\?/) || as[i].href.match(/\/ldir\.\php\?/)){
                if(!as[i].target){
                    as[i].target = "_blank";
                    continue;
                }
            }

            if(ajaxEnabled){
                if(b_xml){
                    as[i].onclick = function( ){
                        var newHREF = this.href;

                        if(newHREF.match(/\?/)){
                            newHREF += "&xmlOnly=1";
                        }
                        else{
                            newHREF += "?xmlOnly=1";
                        }

                        if(newHREF == navHistory[curNavPoint]){
                            return false;
                        }

                        for(var i = navHistory.length - 1; i > curNavPoint; i--){
                            navHistory.pop( );
                        }

                        curNavPoint += 1;
                        navHistory.push(newHREF);

                        b_xml.request(newHREF);

                        if(b_xml.isSupported){
                            return false;
                        }
                        return true;
                    }
                }
            }
        }
    }
}

function initEditors( ){
    var t_areaA = document.getElementsByTagName('textarea');
    var bgzObj = null;
    for(var i = 0; i < t_areaA.length; i++){
        var t_area = t_areaA[i];
        if(t_area.className == 'bgz_input'){
            var base_id = t_area.id.replace(/^bgz_input_/gi, '');
            buildEditor(base_id);
        }
    }
    bgzObj = null;
}

function initObjects( ){
    if(document.getElementsByTagName){
        var objects = document.getElementsByTagName("div");
        var len = objects.length;

        for(var i = 0; i < len; i++){
            var obj = objects[i];
            if(obj.className && obj.className == 'bgzobject'){
                var paramStr = '';
                var objStr = '\n<object ';
                var embedStr = '\n<embed ';
                var params = obj.getElementsByTagName('param');
                var plen = params.length;
                var o_type = '';
                var o_filename = '';
                var o_width = '';
                var o_height = '';
                //need o_type, it will be first or second in the list, but just in case.
                for(j = 0; j < plen; j++){
                    var param = params[j];
                    var pn = param.name;
                    var pv = param.value;
                    if(pn == 'o_type'){
                        o_type = pv;

                        //do this here because we have to force video type for wmv files
                        var isWindows = false;
                        //if( o_type != 'wmv' && !document.all){
                        //     isWindows = false;
                        //}else if(o_type == 'wmv' || navigator.userAgent.match(/windows/i)){
                        if(o_type == 'wmv' || navigator.userAgent.match(/windows/i)){
                            isWindows = true;
                        }

                        break;
                    }
                }
                for(j = 0; j < plen; j++){
                    var param = params[j];
                    var pn = param.name;
                    var pv = param.value;

                    switch(pn){
                    case 'o_type':
                        if(o_type == 'swf'){
                            embedStr += ' type="application/x-shockwave-flash" ';
                            objStr += ' classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" ';
                            objStr += ' codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ';
                        }
                        else if(isWindows && o_type != 'mov'){

                            embedStr += ' type="application/x-mplayer2" ';
                            embedStr += '  pluginspage="http://www.microsoft.com/Windows/Downloads/Contents/Products/MediaPlayer/" ';
                            objStr += ' classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" ';
                            objStr += ' standby="Loading..." ';
                            objStr += ' type="application/x-oleobject" ';
                            objStr += ' codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,5,715" ';
                        }
                        else{
                            embedStr += ' pluginspage="http://www.apple.com/quicktime/download/" ';
                            objStr += ' classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" ';
                            objStr += ' codebase="http://www.apple.com/qtactivex/qtplugin.cab" ';
                        }
                        break;
                    case 'o_filename':
                        o_filename = pv;
                        if(o_type == 'swf'){
                            paramStr += ' <param name="movie" value="/site_docs/' + pv + '" /> \n';
                        }
                        else if(isWindows && o_type != 'mov'){
                            paramStr += ' <param name="filename" value="/site_docs/' + pv + '" /> \n';
                        }
                        else{
                            paramStr += ' <param name="src" value="/site_docs/' + pv + '" /> \n';
                        }
                        embedStr += ' src="/site_docs/' + pv + '" ';

                        break;
                    case 'o_width':
                        o_width = pv;
                        obj.width = pv;
                        embedStr += ' width="' + pv + '" ';
                        objStr += ' width="' + pv + '" ';
                        break;
                    case 'o_height':
                        o_height = pv;
                        obj.height = pv;
                        embedStr += ' height="' + pv + '" ';
                        objStr += ' height="' + pv + '" ';
                        break;
                    default:
                        pn = pn.replace(/^(o\_)/, '');

                        if(!isWindows && pn == 'showcontrols'){
                            pn = 'controller';
                        }

                        if(pn == 'transparency'){
                            pn = 'wmode';
                            pv = 'transparent';
                        }

                        paramStr += ' <param name="' + pn + '" value="' + pv + '" /> ';

                        if(pv.toLowerCase( ) == 'false'){
                            pv = '0';
                        }
                        else if(pv.toLowerCase( ) == 'true'){
                            pv = '1';
                        }

                        if(pn == 'showcontrols'){
                            if(pv == '0'){
                                paramStr += ' <param name="ShowStatusBar" value="false" /> \n';
                                embedStr += ' showstatusbar="0" ';
                            }
                            else{
                                paramStr += ' <param name="ShowStatusBar" value="true" /> \n';
                                embedStr += ' showstatusbar="1" ';
                            }
                        }

                        embedStr += ' ' + pn + '="' + pv + '" ';


                        break;
                    }
                }//end params

                embedStr += '></embed>\n';
                objStr += '>\n';
                //alert(objStr + paramStr + embedStr + '</object>');
                obj.innerHTML = objStr + paramStr + embedStr + '</object>\n';
                //alert(obj.innerHTML);
                obj.style.display = 'block';
            }//end if bgzobject
        }
    }
}

//Cool input effects
function inputOver(e){
    this.className = "buttonOver";
}

function inputOut(e){
    this.className = "button";
}

//drop down menus ##################################################


var CurMenu = null;
var isDropped = false;
var isHideCheck = false;
var subCurMenu = null;
var subIsDropped = false;
var subIsHideCheck = false;

function initTopMenuLinks( ){
    var hmenu = document.getElementById('tmenu');

    if(!hmenu){
        return;
    }

    var tdA = hmenu.getElementsByTagName('td')
    var len = tdA.length;

    for(var i = 0; i < len; i++){
        var td = tdA[i];
        if(bgzDDEnabled){
            td.bgzdd = new bgzDropDown( );
            var ul = td.getElementsByTagName('ul')[0];
            if(ul){
                td.bgzdd.init(td, ul, 'down');
            }
        }
        //no drop downs on this site, it uses a sub menu
        //else{
        //    td.onmouseover = pageON;
        //    td.onmouseout = pageOFF;
        //}
    }
}
function initLeftMenuLinks( ){
    var dleftmenu = document.getElementById('dleftmenu');
    var liA = dleftmenu.getElementsByTagName('li')
    var len = liA.length;

    for(var i = 0; i < len; i++){
        var li = liA[i];
        if(bgzDDEnabled){
            li.bgzdd = new bgzDropDown( );
            var ul = li.getElementsByTagName('ul')[0];
            if(ul){
                li.bgzdd.init(li, ul, 'right');
            }
        }
        else{
            li.onmouseover = pageON;
            li.onmouseout = pageOFF;
        }
    }
}
function pageON(index){
    var uls = this.getElementsByTagName('ul');
    if(uls.length > 0){
        show(uls[0]);
    }

}
function pageOFF(index){
    if(document.getElementById){
        if(!isHideCheck) hideMenu( );
    }
}
function show(menu){
    if(CurMenu)
        CurMenu.style.display = "none";
    menu.style.display = "block";
    isDropped = true;
    CurMenu = menu;
}
function hideMenu( ){
    if(CurMenu){
        isDropped = false;
        isHideCheck = true;
        setTimeout('checkDropped( );', 500);
        isHideCheck = false;
    }
}
function checkDropped( ){
    if(!isDropped && CurMenu != null) CurMenu.style.display = "none";
}
//############################################################


function printPage(buttonID) {
    var printButton = document.getElementById(buttonID);
    printButton.style.visibility = "hidden";
    window.print();
    window.close();
}

function disableBoxes(form, check){
    for(var i = 0; i < form.elements.length; i++){
        if(form.elements[i].type == 'checkbox' && form.elements[i].id != 'acheck'){
            form.elements[i].disabled = check;
            form.elements[i].checked = check;
        }
    }
}

function setCookie(cookieName,cookieValue){
    var dateNow = new Date( );
    var expire = new Date();
    expire.setTime(dateNow.getTime() + 7200000);
    document.cookie = cookieName + "=" + escape(cookieValue) + ";expires=" + expire.toGMTString( ) + ";path=/";
}

function getCookie(cname){
    var dc = document.cookie;
    var prefix = cname + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1){
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else{
        begin += 2;
    }
    var end = document.cookie.indexOf(";", begin);
    if (end == -1){
        end = dc.length;
    }
    return unescape(dc.substring(begin + prefix.length, end));
}

function convert2RGB(color) {
    var rgb1 = parseInt(color.substr(0, 2), 16);
    var rgb2 = parseInt(color.substr(2, 2), 16);
    var rgb3 = parseInt(color.substr(4, 2), 16);

    return "rgb(" + rgb1 + ", " + rgb2 + ", " + rgb3 + ")";
}

function addslashes(str){
    str = str.replace(/\'/g, '\\\'');
    str = str.replace(/\"/g, '\\"');
    str = str.replace(/\\/g, '\\\\');
    str = str.replace(/\0/g, '\\0');
    return str;
}

function stripslashes(str){
    str=str.replace(/\\'/g, '\'');
    str=str.replace(/\\"/g, '"');
    str=str.replace(/\\\\/g, '\\');
    str=str.replace(/\\0/g, '\0');
    return str;
}

function refreshSImg(sImg){
    var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 8;
	var randomStr = '';
	for (var i = 0; i < string_length; i++) {
		var rnum = Math.floor(Math.random( ) * chars.length);
		randomStr += chars.substring(rnum, rnum+1);
	}

	var sImgSrc = sImg.src;
	if(sImgSrc.match('&')){
	    sImgSrcA = sImgSrc.split('&');
	    sImgSrc = sImgSrcA[0];
	}

    sImg.src = sImgSrc + '&' + randomStr;
}

/* GOOGLE MAPS */

function setDirections(toAddress, fromAddress){
    if(!fromAddress || !toAddress){
        return;
    }

    var mapObj = document.getElementById("google_map");
    if(!mapObj){
        return;
    }

    var directions = document.getElementById('directions');
    if(!directions){
        return;
    }

    var map = new GMap2(mapObj);
    map.addControl(new GSmallMapControl());
    map.addControl(new GMapTypeControl());

    gdir = new GDirections(map, directions);
    GEvent.addListener(gdir, "load", onGDirectionsLoad);
    GEvent.addListener(gdir, "error", handleErrors);

    gdir.load("from: " + fromAddress + " to: " + toAddress);

}

function handleErrors( ){
    if (gdir.getStatus( ).code == G_GEO_UNKNOWN_ADDRESS)
        alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.\nError code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_SERVER_ERROR)
        alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.\n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_MISSING_QUERY)
        alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.\n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_BAD_KEY)
        alert("The given key is either invalid or does not match the domain for which it was given. \n Error code: " + gdir.getStatus().code);

    else if (gdir.getStatus( ).code == G_GEO_BAD_REQUEST)
        alert("A directions request could not be successfully parsed.\n Error code: " + gdir.getStatus().code);

    else alert("An unknown error occurred.");
}

function onGDirectionsLoad( ){
    var directions = document.getElementById('directions');
    directions.style.display = 'block';
}

var map;
var myPano;
var panoClient;
function loadGoogleMaps( ){
    if(GBrowserIsCompatible( )){
        maps = document.getElementsByTagName("div");

        for(var i = 0; i < maps.length; i++){
            var curMap = maps[i];
            if(curMap.id == "google_map"){
                var map_inner = curMap.innerHTML;

                var address = map_inner.replace(/address\:/, '');

                var info = '';
                var eid = 0;
                if(address.match(/\|\|info\:/g)){
                    var addA = address.split('||');
                    address = addA[0];

                    var info = addA[1].replace(/info\:/, '');

                    if(addA[2]){
                        eid = addA[2].replace(/^\s*|\s*$/, '');;
                    }
                }

                if(map_inner.match(/address\:/g)){
                    markAddress(address, curMap, info, eid);
                }
                else{
                    var coords = address.split(",");
                    if(!coords[1]){
                        return;
                    }

                    var map = new GMap2(curMap);
                    var point = new GLatLng(coords[0], coords[1]);

                    map.setCenter(point, 13);
                    map.addControl(new GSmallMapControl());
                    map.addControl(new GMapTypeControl());

                    var marker = new GMarker(point);
                    map.addOverlay(marker);

                    /*var sv_container = document.getElementById("google_pano");
                    if(sv_container){
                        var myPano = new GStreetviewPanorama(sv_container);
                        GEvent.addListener(myPano, "error", handleNoFlash);
                        svOverlay = new GStreetviewOverlay( );
                        map.addOverlay(svOverlay);
                        GEvent.addListener(map, "click", function(overlay,latlng) {
                            sv_container.style.display = 'block';
                            myPano.setLocationAndPOV(latlng);
                        });
                    }*/

                    var sv_container = document.getElementById("google_pano");
                    if(sv_container){
                        panoClient = new GStreetviewClient();

                        GEvent.addListener(map, "click", function(overlay,latlng) {
                            panoClient.getNearestPanorama(latlng, showPanoData);
                        });

                        myPano = new GStreetviewPanorama(sv_container);
                        svOverlay = new GStreetviewOverlay( );
                        map.addOverlay(svOverlay);
                        myPano.setLocationAndPOV(point);
                        GEvent.addListener(myPano, "error", handleNoFlash);
                        panoClient.getNearestPanorama(point, showPanoData);

                    }

                    GEvent.addListener(marker, "click", function(overlay,latlng){
                        map.openInfoWindowHtml(point, "<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");
                    });

                    marker.openInfoWindowHtml("<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");

                }
            }
        }
    }
}

function markAddress(address, curMap, info, eid){
    var map = new GMap2(curMap);
    var geocoder = new GClientGeocoder( );

    geocoder.getLatLng(address,
        function(point){
            if(!point){
                alert("Google was unable to find " + address + " at this time, please make sure the address provided, is correct.");
            }
            else{
                map.setCenter(point, 13);
                map.addControl(new GSmallMapControl());
                map.addControl(new GMapTypeControl());

                var marker = new GMarker(point);
                map.addOverlay(marker);

                var sv_container = document.getElementById("google_pano");
                if(sv_container){
                    panoClient = new GStreetviewClient();

                    GEvent.addListener(map, "click", function(overlay,latlng) {
                        panoClient.getNearestPanorama(latlng, showPanoData);
                    });

                    myPano = new GStreetviewPanorama(sv_container);
                    svOverlay = new GStreetviewOverlay( );
                    map.addOverlay(svOverlay);
                    myPano.setLocationAndPOV(point);
                    GEvent.addListener(myPano, "error", handleNoFlash);
                    panoClient.getNearestPanorama(point, showPanoData);

                }

                GEvent.addListener(marker, "click", function(overlay,latlng){
                    map.openInfoWindowHtml(point, "<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");
                });

                marker.openInfoWindowHtml("<div style=\"line-height: 1.2em; font-size: .9em\">" + info + "</div>");

                var lat_long = new String(point);
                var lat_long = lat_long.replace(/\)|\(/g, '');
                var lat_longA = lat_long.split(/,/);

                var lat = lat_longA[0].replace(/^\s*|\s*$/, '');
                var lon = lat_longA[1].replace(/^\s*|\s*$/, '');;

                if(eid > 0){
                    b_xml.request('/ajax.php/type/set_coords/eid/' + eid + '/lat/' + lat + '/lon/' + lon);
                }
            }
        }
    );

}

function handleNoFlash(errorCode){
    if(errorCode == 603){
        //alert("Error: Flash doesn't appear to be supported by your browser");
        return;
    }
}

function showPanoData(panoData) {
    if (panoData.code != 200) {
        //GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
        return;
    }

    var sv_container = document.getElementById("google_pano");
    sv_container.style.display = 'block';

    myPano.setLocationAndPOV(panoData.location.latlng);
}



/* END GOOGLE MAPS */

/* general popups */
function generalPopUp(loc, w, h){
    gPopUp = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=0, status=no,toolbar=no,resizable=yes");
    gPopUp.focus( );
}

function generalPopUp2(loc, w, h){
    gPopUp = window.open(loc, "gpopup", "width=" + w + ",height=" + h + ", scrollbars=1, status=no,toolbar=no,resizable=yes");
    gPopUp.focus( );
}

function imageSelectPopUp(pwinvar){
    imgSelectPopUp = window.open("./imageselect.php?mode=1&fieldID=" + pwinvar, "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}
function imageSelectPopUp2(pwinvar){
    imgSelectPopUp = window.open("./imageselect.php?mode=1&fieldID=" + pwinvar, "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}

function openUploader( ){
    var imgSelectPopUp = window.open("./imageselect.php", "ImageSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );

    return false;
}

function fileSelectPopUp(pwinvar){
    imgSelectPopUp = window.open("./fileselect.php?mode=1&fieldID=" + pwinvar, "FileSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );
}

function openFUploader( ){
    var imgSelectPopUp = window.open("./fileselect.php", "FileSelector", "width=780,height=480, scrollbars=0, status=no,toolbar=no,resizable=no");
    imgSelectPopUp.focus( );

    if(document.all){
        window.event.cancelBubble = true;
    }
    else{
        e.stopPropagation( );
        e.preventDefault( );
    }
    return false;
}

function initJWPlayer( ){
    var flashvars = { file:'/site_docs/bbbsystems_clients_720x540_sas.flv', bufferlength: '10', autostart:'false', volume:'50', stretching:'fill', screencolor:'ffffff', image:'/site_images/bbbsystems_clients_title.jpg' };
    var params = { allowfullscreen:'true', allowscriptaccess:'always', wmode:'transparent' };
    var attributes = { id:'home_testimonials_video_player', name:'home_testimonials_video_player' };

    swfobject.embedSWF('/site_docs/jwplayer.swf', 'home_testimonials_video', '386', '240', '9.0.115', 'false', flashvars, params, attributes);

    var flashvars = { file:'/site_docs/bbbsystems_clients_720x540_sas.flv', bufferlength: '10', autostart:'false', volume:'50', stretching:'fill', screencolor:'ffffff', image:'/site_images/bbbsystems_clients_title.jpg' };
    var params = { allowfullscreen:'true', allowscriptaccess:'always', wmode:'transparent' };
    var attributes = { id:'content_testimonials_video_player', name:'content_testimonials_video_player' };

    swfobject.embedSWF('/site_docs/jwplayer.swf', 'content_testimonials_video', '680', '422', '9.0.115', 'false', flashvars, params, attributes);
}

function loadCufonFonts( ){
    Cufon.replace('h1',{
        fontFamily: 'ostrich',
        fontSize: '60px'
    });

    Cufon.replace('h1,h2,h3,h4,h5,h6',{
        fontFamily: 'ostrich'
    });

    Cufon.replace('h5', {
        fontFamily: 'ostrich',
        fontSize: '30px'
    });

    Cufon.replace('#tmenu td a span',{
        fontFamily: 'ostrich',
        textShadow: '2px 2px #000',
        fontSize: '30px'
    });

    Cufon.replace('#smenu .subm',{
        hover: true,
        fontFamily: 'ostrich',
        fontSize: '18px'
    });

}

function initColorbox( ){
    $('.portfolio_thumbnail a').colorbox({height: '826px', width: '950px'});
}

function initPortfolioThumbs( ){
    $('#client_portfolio_table td a').each(function( ){
        $(this).mouseenter(function( ){
            if($(this).children('.thumb_hover').length == 0){
                $(this).prepend('<div class="thumb_hover"></div>');
            }

            $($(this).parent( ).siblings( ).find('.thumb_hover')).remove( );
        }).mouseleave(function( ){
            $($(this).parent( ).find('.thumb_hover')).remove( );
        });
    });
}

function initProjectThumbs( ){
    $('#portfolio_proj_thumbs td a').each(function( ){
        $(this).mouseenter(function( ){
            if($(this).children('.thumb_hover, .thumb_overlay_cur').length == 0){
                $(this).prepend('<div class="thumb_hover"></div>');
            }

            $($(this).parent( ).siblings( ).find('.thumb_hover')).remove( );
        }).mouseleave(function( ){
            $($(this).parent( ).find('.thumb_hover')).remove( );
        });

        $(this).click(function( ){
            $('#portfolio_featured img').attr('src', $(this).attr('href'));
            $($(this).parent( ).parent( ).find('.thumb_hover, .thumb_overlay_cur')).remove( );
            if($(this).children('.thumb_hover, .thumb_overlay_cur').length == 0){
                $(this).prepend('<div class="thumb_overlay_cur"></div>');
            }
            return false;
        });
    });
}
