craig 0.0.1.pre → 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. data/README.md +165 -28
  2. data/Rakefile +7 -0
  3. data/craig.gemspec +2 -2
  4. data/lib/craig/categories.rb +169 -0
  5. data/lib/craig/cities.rb +262 -0
  6. data/lib/craig/craigslist.rb +49 -0
  7. data/lib/craig/listing.rb +73 -0
  8. data/lib/craig/node.rb +151 -0
  9. data/lib/craig/page.rb +50 -0
  10. data/lib/craig/tasks/update_cities.rb +95 -0
  11. data/lib/craig/version.rb +1 -1
  12. data/lib/craig.rb +24 -1
  13. data/test/community_events_test.rb +56 -0
  14. data/test/for_sale_cars_trucks_test.rb +38 -0
  15. data/test/for_sale_photo_video_test.rb +24 -0
  16. data/test/parsing_test.rb +119 -0
  17. data/test/personals_casual_encounters_test.rb +36 -0
  18. data/test/resumes_test.rb +24 -0
  19. data/test/sample_html/community_event-one-page_files/craigslist.css +1487 -0
  20. data/test/sample_html/community_event-one-page_files/formats.js +100 -0
  21. data/test/sample_html/community_event-one-page_files/jquery-1.7.2.js +632 -0
  22. data/test/sample_html/community_event-one-page_files/jquery.form-defaults.js +2 -0
  23. data/test/sample_html/community_event-one-page_files/toChecklist.js +47 -0
  24. data/test/sample_html/community_event-one-page_files/tocs.js +30 -0
  25. data/test/sample_html/community_events-one-page.html +294 -0
  26. data/test/sample_html/community_events.html +1077 -0
  27. data/test/sample_html/community_events_files/craigslist.css +1487 -0
  28. data/test/sample_html/community_events_files/formats.js +100 -0
  29. data/test/sample_html/community_events_files/jquery-1.7.2.js +632 -0
  30. data/test/sample_html/community_events_files/jquery-1.js +632 -0
  31. data/test/sample_html/community_events_files/jquery.form-defaults.js +2 -0
  32. data/test/sample_html/community_events_files/jquery.js +2 -0
  33. data/test/sample_html/community_events_files/toChecklist.js +47 -0
  34. data/test/sample_html/community_events_files/tocs.js +30 -0
  35. data/test/sample_html/for_sale.html +1478 -0
  36. data/test/sample_html/for_sale_cars_trucks.html +1483 -0
  37. data/test/sample_html/for_sale_cars_trucks_files/craigslist.css +1487 -0
  38. data/test/sample_html/for_sale_cars_trucks_files/formats.js +100 -0
  39. data/test/sample_html/for_sale_cars_trucks_files/jquery-1.7.2.js +632 -0
  40. data/test/sample_html/for_sale_cars_trucks_files/jquery.form-defaults.js +2 -0
  41. data/test/sample_html/for_sale_cars_trucks_files/toChecklist.js +47 -0
  42. data/test/sample_html/for_sale_cars_trucks_files/tocs.js +30 -0
  43. data/test/sample_html/for_sale_files/craigslist.css +1474 -0
  44. data/test/sample_html/for_sale_files/formats.js +107 -0
  45. data/test/sample_html/for_sale_files/jquery-1.js +632 -0
  46. data/test/sample_html/for_sale_files/jquery.js +2 -0
  47. data/test/sample_html/for_sale_files/toChecklist.js +47 -0
  48. data/test/sample_html/for_sale_files/tocs.js +30 -0
  49. data/test/sample_html/for_sale_photo_video.html +674 -0
  50. data/test/sample_html/for_sale_photo_video_files/craigslist.css +1487 -0
  51. data/test/sample_html/for_sale_photo_video_files/formats.js +100 -0
  52. data/test/sample_html/for_sale_photo_video_files/jquery-1.7.2.js +632 -0
  53. data/test/sample_html/for_sale_photo_video_files/jquery.form-defaults.js +2 -0
  54. data/test/sample_html/for_sale_photo_video_files/toChecklist.js +47 -0
  55. data/test/sample_html/for_sale_photo_video_files/tocs.js +30 -0
  56. data/test/sample_html/gigs.html +1047 -0
  57. data/test/sample_html/gigs_files/craigslist.css +1474 -0
  58. data/test/sample_html/gigs_files/formats.js +107 -0
  59. data/test/sample_html/gigs_files/jquery-1.js +632 -0
  60. data/test/sample_html/gigs_files/jquery.js +2 -0
  61. data/test/sample_html/gigs_files/toChecklist.js +47 -0
  62. data/test/sample_html/gigs_files/tocs.js +30 -0
  63. data/test/sample_html/housing.html +1406 -0
  64. data/test/sample_html/housing_vacation_rentals_files/craigslist.css +1474 -0
  65. data/test/sample_html/housing_vacation_rentals_files/formats.js +107 -0
  66. data/test/sample_html/housing_vacation_rentals_files/jquery-1.7.2.js +632 -0
  67. data/test/sample_html/housing_vacation_rentals_files/jquery.form-defaults.js +2 -0
  68. data/test/sample_html/housing_vacation_rentals_files/toChecklist.js +47 -0
  69. data/test/sample_html/housing_vacation_rentals_files/tocs.js +30 -0
  70. data/test/sample_html/jobs.html +1120 -0
  71. data/test/sample_html/jobs_files/craigslist.css +1474 -0
  72. data/test/sample_html/jobs_files/formats.js +107 -0
  73. data/test/sample_html/jobs_files/jquery-1.js +632 -0
  74. data/test/sample_html/jobs_files/jquery.js +2 -0
  75. data/test/sample_html/jobs_files/toChecklist.js +47 -0
  76. data/test/sample_html/jobs_files/tocs.js +30 -0
  77. data/test/sample_html/personals.html +1096 -0
  78. data/test/sample_html/personals_casual_encounters.html +1086 -0
  79. data/test/sample_html/personals_casual_encounters_files/craigslist.css +1487 -0
  80. data/test/sample_html/personals_casual_encounters_files/formats.js +100 -0
  81. data/test/sample_html/personals_casual_encounters_files/jquery-1.7.2.js +632 -0
  82. data/test/sample_html/personals_casual_encounters_files/jquery.form-defaults.js +2 -0
  83. data/test/sample_html/personals_casual_encounters_files/toChecklist.js +47 -0
  84. data/test/sample_html/personals_casual_encounters_files/tocs.js +30 -0
  85. data/test/sample_html/personals_strictly_platonic_files/craigslist.css +1474 -0
  86. data/test/sample_html/personals_strictly_platonic_files/formats.js +107 -0
  87. data/test/sample_html/personals_strictly_platonic_files/jquery-1.js +632 -0
  88. data/test/sample_html/personals_strictly_platonic_files/jquery.js +2 -0
  89. data/test/sample_html/personals_strictly_platonic_files/toChecklist.js +47 -0
  90. data/test/sample_html/personals_strictly_platonic_files/tocs.js +30 -0
  91. data/test/sample_html/resumes.html +811 -0
  92. data/test/sample_html/resumes_files/craigslist.css +1487 -0
  93. data/test/sample_html/resumes_files/formats.js +100 -0
  94. data/test/sample_html/resumes_files/jquery-1.7.2.js +632 -0
  95. data/test/sample_html/resumes_files/jquery.form-defaults.js +2 -0
  96. data/test/sample_html/resumes_files/toChecklist.js +47 -0
  97. data/test/sample_html/resumes_files/tocs.js +30 -0
  98. data/test/sample_html/services.html +1096 -0
  99. data/test/sample_html/services_files/craigslist.css +1487 -0
  100. data/test/sample_html/services_files/formats.js +100 -0
  101. data/test/sample_html/services_files/jquery-1.7.2.js +632 -0
  102. data/test/sample_html/services_files/jquery.form-defaults.js +2 -0
  103. data/test/sample_html/services_files/toChecklist.js +47 -0
  104. data/test/sample_html/services_files/tocs.js +30 -0
  105. data/test/sample_html/test.rb +309 -0
  106. data/test/services_test.rb +25 -0
  107. data/test/test_helper.rb +26 -0
  108. metadata +205 -9
@@ -0,0 +1,2 @@
1
+ jQuery.fn.DefaultValue=function(text){return this.each(function(){var fld_current=this;if(this.value==''||this.value==text){$(this).addClass('dv');this.value=text;}else{return;}
2
+ $(this).focus(function(){if(this.value==text||this.value==''){this.value='';$(this).removeClass('dv');}});$(this).blur(function(){if(this.value==text||this.value==''){this.value=text;$(this).addClass('dv');}});$(this).parents("form").each(function(){$(this).submit(function(){if(fld_current.value==text){fld_current.value='';}});});});};
@@ -0,0 +1,47 @@
1
+ (function($){jQuery.fn.toChecklist=function(o){var updateChecklist=function(action,checklistElem){var showSelectedItemsSetting;var disableDynamicList=function(checklistLength){if(checklistLength>3){showSelectedItemsSetting=$(checklistElem).attr('showSelectedItems');$(checklistElem).attr('showSelectedItems','false');}}
2
+ var enableDynamicList=function(){$(checklistElem).attr('showSelectedItems',showSelectedItemsSetting);}
3
+ switch(action){case'clearAll':var selector='li:has(input:checked)';break;case'checkAll':var selector='li:has(input:not(:checked,:disabled))';break;case'invert':var selector='li:has(input)';break;default:alert("toChecklist Plugin says:\n\nWarning - Invalid action requested on checklist.\nThe action requested was: "+action);break;}
4
+ var checklistLength=$(selector,checklistElem).length;disableDynamicList(checklistLength);$(selector,checklistElem).each(function(i){if(i==checklistLength-2&&checklistLength>3)
5
+ enableDynamicList();$(this).trigger('click');});};if(typeof o=='string'){this.each(function(){if(!$(this).isChecklist())
6
+ return true;updateChecklist(o,this);});return $;}
7
+ o=jQuery.extend({addScrollBar:true,addSearchBox:false,searchBoxText:'Type here to search list...',showCheckboxes:true,showSelectedItems:false,submitDataAsArray:true,preferIdOverName:true,maxNumOfSelections:-1,onMaxNumExceeded:function(){alert('You cannot select more than '+this.maxNumOfSelections+' items in this list.');},cssChecklist:'checklist',cssChecklistHighlighted:'checklistHighlighted',cssLeaveRoomForCheckbox:'leaveRoomForCheckbox',cssEven:'even',cssOdd:'odd',cssChecked:'checked',cssDisabled:'disabled',cssShowSelectedItems:'showSelectedItems',cssFocused:'focused',cssFindInList:'findInList',cssBlurred:'blurred',cssOptgroup:'optgroup'},o);var error=function(msg){alert("jQuery Plugin Error (Plugin: toChecklist)\n\n"+msg);}
8
+ var overflowProperty=(o.addScrollBar)?'overflow-y: auto; overflow-x: hidden;':'';var leaveRoomForCheckbox=(o.showCheckboxes)?'padding-left: 25px':'padding-left: 3px';this.each(function(){var numOfCheckedBoxesSoFar=0;var jSelectElem=$(this);var jSelectElemId=jSelectElem.attr('id');if(jSelectElemId==''||!o.preferIdOverName){jSelectElemId=jSelectElem.attr('name').replace(/\[\]/,'');if(jSelectElemId==''){error('Can\'t convert element to checklist.\nYour SELECT element must'
9
+ +' have a "name" attribute and/or an "id" attribute specified.');return $;}}
10
+ var h=jSelectElem.height();var w=jSelectElem.width();w-=4;if(this.type!='select-multiple'&&this.type!='select-one'){error("Can't convert element to checklist.\n"
11
+ +"Expecting SELECT element with \"multiple\" attribute.");return $;}else if(this.type=='select-one'){return $;}
12
+ var convertListItemsToCheckboxes=function(){var checkboxValue=$(this).attr('value');if(checkboxValue==''){checkboxValue=this.html();}
13
+ checkboxValue=checkboxValue.replace(/ /g,'_');var checkboxId=jSelectElemId+'_'+checkboxValue;var labelText=$(this).html();var selected='';if($(this).attr('disabled')){var disabled=' disabled="disabled"';var disabledClass=' class="disabled"';}else{var disabled='';var disabledClass='';var selected='';if($(this).attr('selected')){if(o.maxNumOfSelections!=-1&&numOfCheckedBoxesSoFar<o.maxNumOfSelections){selected+='checked="checked"';numOfCheckedBoxesSoFar++;}else if(o.maxNumOfSelections==-1){selected+='checked="checked"';}}}
14
+ var arrayBrackets=(o.submitDataAsArray)?'[]':'';$(this).replaceWith('<li tabindex="0"><input type="checkbox" value="'+checkboxValue
15
+ +'" name="'+jSelectElemId+arrayBrackets+'" id="'+checkboxId+'" '+selected+disabled
16
+ +' /><label for="'+checkboxId+'"'+disabledClass+'>'+labelText+'</label></li>');if(o.showCheckboxes===false){$('#'+checkboxId).css('position','absolute').css('left','-50000px');}else{$('label[for='+checkboxId+']').addClass(o.cssLeaveRoomForCheckbox);}};$('optgroup',jSelectElem).each(function(){$('option',this).each(convertListItemsToCheckboxes);$(this).replaceWith('<li class="'+o.cssOptgroup+'">'+$(this).attr('label')+'</li>'+$(this).html());});$('option',jSelectElem).each(convertListItemsToCheckboxes);$('li:first',jSelectElem).each(function(){if($(this).hasClass('optgroup'))
17
+ $(this).css('border-top','none');});var checklistId=jSelectElemId+'_'+'checklist';jSelectElem.replaceWith('<div id="'+jSelectElemId+'"><div id="'+checklistId+'">'
18
+ +'<ul>'+jSelectElem.html()+'</ul></div></div>');var checklistDivId='#'+checklistId;$('#'+jSelectElemId).attr('showSelectedItems',o.showSelectedItems.toString());$(checklistDivId).css('position','relative');var findInListDivHeight=0;if(o.addSearchBox){var focusSearchBox=function(){this.value="";$(this).removeClass(o.cssBlurred);}
19
+ var blurSearchBox=function(){this.value=this.defaultValue;$(this).addClass(o.cssBlurred);}
20
+ $(checklistDivId).before('<div class="findInList" id="'+jSelectElemId+'_findInListDiv">'
21
+ +'<input type="text" value="'+o.searchBoxText+'" id="'
22
+ +jSelectElemId+'_findInList" class="'+o.cssBlurred+'" /></div>');$('#'+jSelectElemId+'_findInList').css('width',w);$('#'+jSelectElemId+'_findInList')
23
+ .bind('focus.focusSearchBox',focusSearchBox)
24
+ .bind('blur.blurSearchBox',blurSearchBox)
25
+ .keyup(function(event){var textbox=this;if(this.value==''){$(checklistDivId).attr('scrollTop',0);$(this).unbind('keydown.tabToFocus');return false;}
26
+ $('label',checklistDivId).each(function(){if(!$(this).is(':disabled')){var curItem=$(this).html().toLowerCase();var typedText=textbox.value.toLowerCase();if(curItem.indexOf(typedText)==0){var curLabelObj=this;var scrollValue=this.parentNode.offsetTop;$(checklistDivId).attr('scrollTop',scrollValue);$(textbox).unbind('blur.blurSearchBox').unbind('keydown.tabToFocus')
27
+ .bind('keydown.tabToFocus',function(event){if(event.keyCode==9){event.preventDefault();$(curLabelObj.parentNode).bind('blur.restoreDefaultText',function(){var defaultVal=$(textbox).attr('defaultValue');$(textbox).attr('value',defaultVal).addClass(o.cssBlurred)
28
+ .bind('blur.blurSearchBox',blurSearchBox);$(this).unbind('blur.restoreDefaultText');}).bind('keydown.tabBack',function(event){if(event.keyCode==9&&event.shiftKey){event.preventDefault();$(textbox)
29
+ .unbind('focus.focusSearchBox')
30
+ .removeClass(o.cssBlurred)
31
+ .bind('focus.focusSearchBox',focusSearchBox)
32
+ .bind('blur.blurSearchBox',blurSearchBox).focus();$(this).unbind('keydown.tabBack');}}).focus();$(this).unbind('keydown.tabToFocus');}});return false;}}});return;});findInListDivHeight=$('#'+jSelectElemId+'_findInListDiv').height()+3;}
33
+ $(checklistDivId).addClass(o.cssChecklist);if(o.addScrollBar){$(checklistDivId).height(h-findInListDivHeight).width(w);}else{$(checklistDivId).height('100%').width(w);}
34
+ $('ul',checklistDivId).addClass(o.cssChecklist);$('li:even',checklistDivId).addClass(o.cssEven);$('li:odd',checklistDivId).addClass(o.cssOdd);$('li',checklistDivId).focus(function(){$(this).addClass(o.cssFocused);}).blur(function(event){$(this).removeClass(o.cssFocused);});$('li',checklistDivId).each(function(){if($('input',this).attr('checked')){$(this).addClass(o.cssChecked);}});var toggleDivGlow=function(){if($('li',checklistDivId).hasClass(o.cssChecked)){$(checklistDivId).addClass(o.cssChecklistHighlighted);}else{$(checklistDivId).removeClass(o.cssChecklistHighlighted);}}
35
+ var moveToNextLi=function(){if($(this).attr('tagName')!='LI')
36
+ return;if($(this).is('li:has(input)'))
37
+ $(this).focus();else
38
+ $(this).next().each(moveToNextLi);}
39
+ var check=function(event){if(event.type=='keydown'){if(event.keyCode==32||event.keyCode==13)event.preventDefault();if(event.keyCode==9&&!event.shiftKey){event.preventDefault();$(this).unbind('keydown.tabBack').blur().next().each(moveToNextLi);}else if(event.keyCode==9&&event.shiftKey){}
40
+ if(event.keyCode!=32)return;}
41
+ var numOfItemsChecked=$('input:checked',checklistDivId).length;if(o.maxNumOfSelections!=-1&&numOfItemsChecked>=o.maxNumOfSelections&&!$('input',this).attr('checked')){o.onMaxNumExceeded();event.preventDefault();return;}
42
+ $('label',this).unbind();if(event.target.tagName!='INPUT'&&event.target.tagName!='LABEL'){$('input',this).trigger('click');}
43
+ var checkbox=$('input',this).get(0);updateLIStyleToMatchCheckedStatus(checkbox);if($('#'+jSelectElemId).attr('showSelectedItems')==='true')showSelectedItems();};var updateLIStyleToMatchCheckedStatus=function(checkbox){if(checkbox.checked){$(checkbox).parent().addClass(o.cssChecked);}else{$(checkbox).parent().removeClass(o.cssChecked);}
44
+ toggleDivGlow();}
45
+ var handFocusToLI=function(){$(this).parent().focus();};$('li:has(input)',checklistDivId).click(check).keydown(check);$('label',checklistDivId).focus(handFocusToLI);$('input',checklistDivId).focus(handFocusToLI);toggleDivGlow();var fixFormElems=function(event){$('input',this).each(function(){this.checked=this.defaultChecked;updateLIStyleToMatchCheckedStatus(this);if(o.showSelectedItems)showSelectedItems();}).parent();}
46
+ $('form:has(div.'+o.cssChecklist+')').bind('reset.fixFormElems',fixFormElems);var selectedItemsListId='#'+jSelectElemId+'_selectedItems';if(o.showSelectedItems){$(selectedItemsListId).addClass(o.cssShowSelectedItems);}
47
+ var showSelectedItems=function(){$(selectedItemsListId).html('');$('label',checklistDivId).each(function(){if($(this).parent().hasClass(o.cssChecked)){var labelText=jQuery.trim($(this).html());$(selectedItemsListId).append('<li>'+labelText+'</li>');}});};if(o.showSelectedItems)showSelectedItems();});};jQuery.fn.isChecklist=function(){var isChecklist=false;this.each(function(){var divContainsChecklist=$('#'+this.id+'_checklist',this).get();isChecklist=(this.tagName=='DIV'&&divContainsChecklist);return false;});return(isChecklist)?true:false;};})(jQuery);
@@ -0,0 +1,30 @@
1
+ $(document).ready(function(){$('#catAbb, input.min, input.max').removeAttr('disabled');$('#showImgs').css('display','inline');if(checkCookie()==='show'){showImgs();}else{hideImgs();}
2
+ $('input.min').DefaultValue('min');$('input.max').DefaultValue('max');$('form').submit(function(){if(catAbb&&($('#catAbb').val()===catAbb)){$('#catAbb').attr('disabled','disabled');}});$('#nh').hide().removeAttr('disabled');newSel=$('#nh').clone();newSel.find('#all').remove();$('#nh').replaceWith(newSel);$('#hoodtogon, #hoodtitle').show();$('#hoodtitle').click(toggleHoods);countHoods();$('body').click(function(e){if(!$(e.target).parents('#hoodpicker').length){$('#hoodtogon').show();$('#hoodtogoff').hide();$('#nh').slideUp(100);}});$('#satabs a').click(function(e){e.preventDefault();var f=$('#searchform');var t=f.attr('action').match(/\/search\/.../);var s=getSub($(this).attr('href'));if(s){t=t+"/"+s;}
3
+ f.attr('action',t);f.submit();});if(showMapTabs){$('div.container').before('<blockquote><span class="modebtns">'+
4
+ '<span class="modebtnup" id="golistview">'+listViewText+'</span>'+
5
+ '<span class="modebtnup" id="gopicview">'+picViewText+'</span>'+
6
+ '<span class="modebtndown" id="gomapview">'+mapViewText+'</span>'+
7
+ '</span></blockquote>');$('blockquote').has('#tocpix').before('&nbsp;<blockquote><span class="modebtns">'+
8
+ '<span class="modebtndown" id="golistview">'+listViewText+'</span>'+
9
+ '<span class="modebtnup" id="gopicview">'+picViewText+'</span>'+
10
+ '<span class="modebtnup" id="gomapview">'+mapViewText+'</span>'+
11
+ '</span></blockquote>');$('#tocpix').hide();if((checkCookie()==='show')&&!$('div.container').html()){$('#golistview').removeClass('modebtndown');$('#golistview').addClass('modebtnup');$('#gopicview').removeClass('modebtnup');$('#gopicview').addClass('modebtndown');}
12
+ if($('div.container').html()){$('#toc_rows blockquote').first().hide();}
13
+ $('#golistview').click(function(e){e.preventDefault();if($(this).hasClass('modebtndown')){return false;}
14
+ hideImgs();if($('div.container').html()){$('#usemapcheck input').removeAttr('checked');$('#searchform').submit();}
15
+ else{$('#golistview').removeClass('modebtnup');$('#golistview').addClass('modebtndown');$('#gopicview').removeClass('modebtndown');$('#gopicview').addClass('modebtnup');}});$('#gopicview').click(function(e){e.preventDefault();if($(this).hasClass('modebtndown')){return false;}
16
+ showImgs();if($('div.container').html()){$('#usemapcheck input').removeAttr('checked');$('#searchform').submit();}
17
+ else{$('#golistview').removeClass('modebtndown');$('#golistview').addClass('modebtnup');$('#gopicview').removeClass('modebtnup');$('#gopicview').addClass('modebtndown');}});$('#gomapview').click(function(e){e.preventDefault();if($(this).hasClass('modebtndown')){return false;}
18
+ $('#usemapcheck input:not(:checked)').attr('checked',true);$('#shortlistcheck input').removeAttr('checked');$('#searchform').submit();});$('span.modebtns').prependTo('div.container');$('span.itemsfound').prependTo('div.container');$('#mapcontainer').prepend('<br style="clear:both">');$('span.maptag').click(function(e){e.preventDefault();var mapTagPostingID=$(this).attr('id');mapTagPostingID=mapTagPostingID.replace('maptagid_','');$('#usemapcheck input:not(:checked)').attr('checked',true);$('#zoomtoposting').val(mapTagPostingID);$('#shortlistcheck input').removeAttr('checked');$('#searchform').submit();});}});function toggleHoods(){$('#hoodtogon, #hoodtogoff').toggle();$('#nh').slideToggle(100);$('select#nh').toChecklist({addScrollBar:false,showSelectedItems:true,submitDataAsArray:false});$('#nh').click(countHoods);countHoods();}
19
+ function countHoods(){$('span#hoodcount').text($('#nh :checked').length||$('#nh :selected').length||'all');}
20
+ function showImgs(){if(!window.tocpix)return;$('span.ih').removeClass('ih').addClass('i')
21
+ .each(function(){if($(this).attr('id')){var iP=$(this).attr('id').split(':');thumbURL='http://'+iP[0]+'.craigslist.org/thumb/'+iP[1];postURL=$(this).siblings('a').attr('href');$(this).html('<a href="'+postURL+'"><img alt="" src="'+thumbURL+'"></a>')
22
+ .mouseover(function(){var iP=$(this).attr('id').split(':');fullURL='http://'+iP[0]+'.craigslist.org/medium/'+iP[1];$('#floater').html('<img src="'+fullURL+'">').show();})
23
+ .mouseout(function(){$('#floater').hide();})
24
+ .mousemove(function(e){$('#floater').css({'left':e.pageX+15+'px','top':e.pageY+15+'px'});})}})
25
+ $('#showImgs').hide();$('#hideImgs').css('display','inline');var date=new Date();date.setTime(date.getTime()+(365*24*60*60*1000));document.cookie="cl_img=show; expires="+date.toGMTString()+"; path=/";}
26
+ function getSub(url){var match=url.match(/\/search\/...\/(...)/);if(match){var sub=match[1];return sub;}
27
+ match=url.match(/\/(...)\/...\//);if(match){var sub=match[1];return sub;}}
28
+ function hideImgs(){$('span.i').removeClass('i').addClass('ih');$('#showImgs').css('display','inline');$('#hideImgs').hide();document.cookie='cl_img=null; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/';}
29
+ function checkCookie(){var C=document.cookie.split(';');for(i=0;i<C.length;i++){var c=$.trim(C[i]);if(c.indexOf('cl_img=')===0)return c.substring(7);}
30
+ return null;}