function unhideNextHidden(el) {
    $(el).ancestors()[1].select('.hidden').first().removeClassName('hidden');
    if ($(el).ancestors()[1].select('.hidden').size() == 0) {$(el).hide();}
}

function showFullText(el) {
    el.ancestors()[1].select('.hidden').first().removeClassName('hidden');
    el.ancestors()[0].hide();
}

function limitTextSize(el, size) {
    el.writeAttribute('max-size', size);
    el.observe('keydown', function(e){
        el = Event.element(e);
        if (el.value.length > el.readAttribute('max-size')) {
            el.addClassName('overfilled')
        } else {
            el.removeClassName('overfilled')
        }
    });
}

document.observe('dom:loaded', function(){
    $$('p.close a').invoke('observe', 'click', function(e){ 
        e.stop(); 
        Event.element(e).ancestors()[2].hide(); 
        url_attr = Event.element(e).ancestors()[1].attributes['post-on-close-href'];
        if (url_attr) {Hobo.ajaxRequest(url_attr.value, '', [], {method: 'post'});}
    });
    $$('ul.applications li p a.more[href=\'#\']').invoke('observe', 'click', function(e){ e.stop(); showFullText(Event.element(e));});
    $$('ul.listings li p a.more[href=\'#\']').invoke('observe', 'click', function(e){ e.stop(); showFullText(Event.element(e));});

    $$('input[name=\'position[title]\']').each(function(el) {limitTextSize(el, 75)} );
    $$('textarea[name=\'position[intro_statement]\']').each(function(el) {limitTextSize(el, 500)} );
    $$('textarea[name=\'position[statement_of_special_needs]\']').each(function(el) {limitTextSize(el, 500)} );
    $$('textarea[name=\'profile[enjoying_most_about_working_as_caregiver]\']').each(function(el) {limitTextSize(el, 200)} );

    $$('textarea[name=\'profile[intro_statement]\']').each(function(el) {limitTextSize(el, 500)} );
    $$('textarea[name=\'profile[statement_of_experience]\']').each(function(el) {limitTextSize(el, 500)} );
    $$('textarea[name=\'position_application[memo]\']').each(function(el) {limitTextSize(el, 500)} );
    
    $$('a.print-link').invoke('observe', 'click', function(e){ e.stop(); window.print(); });
    
    $$('.to-be-hidden').invoke('addClassName', 'hidden');
    $$('.to-be-shown').invoke('removeClassName', 'hidden');

    if (el=$$('input#find_caregiver[type=radio]').first()) {el.observe('click', function(){$('caregiver_search_block').removeClassName('hidden'); $('careseeker_search_block').addClassName('hidden'); })};
    if (el=$$('input#find_position[type=radio]').first()) {el.observe('click', function(){$('caregiver_search_block').addClassName('hidden'); $('careseeker_search_block').removeClassName('hidden'); })};
    if (el=$$('div#create.position select.position-language').first()) {el.observe('click', function(){
            if (this.value=='Other') {
              $('hiddable-other-language').removeClassName('hidden');
            } else {
              $('hiddable-other-language').addClassName('hidden');
              $('position[other_language]').value = '';
            }
        })};

    $$('a.disabled').invoke('observe', 'click', function(e){ e.stop(); return false; });
});

function addInfoWindowToMarker(marker,info){
    GEvent.addListener(marker, "click", function(){marker.openInfoWindowHtml(info);});
    return marker;
} 

function initCaremapPositions(map, markers){
    var icon_visited = new GIcon();
    icon_visited.image = "/img/marker-1.png";
    icon_visited.iconSize = new GSize(16, 28);
    icon_visited.iconAnchor = new GPoint(8, 26);
    icon_visited.infoWindowAnchor = new GPoint(8, 6);
    icon_visited.imageMap=[0,15, 31,15, 15,42, 0,15];
    
    var icon = new GIcon();
    icon.image = "/img/marker-2.png";
    icon.iconSize = new GSize(16, 28);
    icon.iconAnchor = new GPoint(8, 26);
    icon.infoWindowAnchor = new GPoint(8, 6);
    icon.imageMap=[0,15, 31,15, 15,42, 0,15];
    
    var B = Builder;
    Builder.dump(B);
    
    markers.each(function(marker){
        m = new GMarker(new GLatLng(marker.lat, marker.lng), { title: marker.title, icon: (marker.viewed ? icon_visited : icon) } );
        html = B.DIV({className: 'overlay'}, [
            B.H3(marker.title),
            B.P([marker.address, B.BR(), '(', marker.distance, 'miles from you)']),
            B.P({className: 'more'}, B.A({href: marker.uri}, 'view position profile')),
            
        ]);
        map.addOverlay(addInfoWindowToMarker(m, html, {}));
    });
}

function initCaremapProfiles(map, markers){
    var icon_visited = new GIcon();
    icon_visited.image = "/img/marker-1.png";
    icon_visited.iconSize = new GSize(16, 28);
    icon_visited.iconAnchor = new GPoint(8, 26);
    icon_visited.infoWindowAnchor = new GPoint(8, 6);
    icon_visited.imageMap=[0,15, 31,15, 15,42, 0,15];
    
    var icon = new GIcon();
    icon.image = "/img/marker-2.png";
    icon.iconSize = new GSize(16, 28);
    icon.iconAnchor = new GPoint(8, 26);
    icon.infoWindowAnchor = new GPoint(8, 6);
    icon.imageMap=[0,15, 31,15, 15,42, 0,15];
    
    var B = Builder;
    Builder.dump(B);
    
    markers.each(function(marker){
        m = new GMarker(new GLatLng(marker.lat, marker.lng), { title: marker.title, icon: (marker.viewed ? icon_visited : icon) } );
        classname = (marker.skills.length > 90) ? 'overlay overlayL' : (marker.skills.length > 65) ? 'overlay overlayM' : 'overlay'
        html = B.DIV({className: classname}, [
            B.DIV({className: 'img'}, B.IMG({alt: '', src: marker.photo})),
            B.H3(marker.title),
            B.P([B.STRONG(marker.skills), B.BR(), marker.address, B.BR(), '(', marker.distance, 'miles from you)']),
            B.P({className: 'more'}, B.A({href: marker.uri}, 'view profile'))
        ]);
        map.addOverlay(addInfoWindowToMarker(m, html, {}));
    });
}
