Blog moved

Suite75 now is Floorplanner. Our blog is moved to http://techblog.floorplanner.com. Please update your bookmarks and RSS readers!

Twitterin’ again

I created my first Twitter account about half a year ago. I updated it every 5 minutes and in between I kept hitting the refresh button to see if there was any news from me friends. I liked the concept of Twitter but it just took too much of my time, so I decided to stop and delete my account.

After reading We Travel in Tribes I got interested again. As a social network I like Twitter because it keeps me up to date on what my friends are doing. But it’s more, like Rands points out:

I want to know more people, and sure, it’s interesting to see what they’re up to, but what I really want to know is what is going on inside their heads with a minimum of fuss. I want to see how they see the world. This is why I follow people on Twitter.

With this in mind I created a new Twitter account and added some friends to my list. I hope I can control my twitter time better then last time :-) This is me: http://www.twitter.com/hertog

JSON parser for ActionScript2

It took us some time, but now we see the virtues of JSON. We’re moving from XML to JSON to communicate with the outside world. The Floorplanner 2D app is (still) AS2 and I’m very happy to see that 5etdemi created a nice JSON parser in AS2.

Saves me a lot of work, thanks!

BitmapData.draw(..) cross domains

Since recently we create a thumbnail image of every Floorplanner plan that is saved. To create a 240×180px image we use the BitmapData class (AS2) to get the pixel info and we send it to our server to create the PNG/JPG.

It can happen that the content (images, swf’s) has to be loaded from a different server then the server that holds the HTML page with the Flash app. We noticed that the Flash Security Sandbox doesn’t like that (surprise!) by not allowing us to use the BitmapData.draw(..) method.

Abdul found a solution for AS3 and we ported it to AS2. We only needed a way to load the crossdomain.xml file from the domain of the HTML page. This sniplet uses Javascript to determine the domain and loads the policy file (crossdomain.xml) from it.

var url:String =  String( ExternalInterface.call(
    "function(){ return document.location.href.toString();}"
));
var split:Array = lCurrentUrl.split( "/" );
System.security.loadPolicyFile( "http://"+ split[2] +"/crossdomain.xml" );

Developing RESTful APIs in Rails

As you may have read on this blog, we are working on a RESTful API for Floorplanner. This post contains some random observations I have made and questions I had (and still have) during the development.

to_xml incompatible with to_json
ActiveRecord#to_json does not seem to be fully compatible with ActiveRecord#to_xml. With to_xml, it is possible to overwrite the to_xml method of your models. The overwritten method will be called, even if an instance of such a model is :included within the XML of another model. For to_json however, only the overwritten method of the instance you call to_json on will be executed; for every included model, the default implementation is used.

A workaround in most cases is to pass every option to the initial call of to_json:

@object.to_json(:except => [:id],
    :include => {:related_objects => {:except => [:id, :object_id]}})

Weird behavior in to_xml called on an array of objects
One model in our project seems to have some caching issues in production mode. If to_xml is called on a collection of instances of this model, the results seems to get stored in cache. On every call, the result is appended to this cached value. The result is a lot of repetition of the same XML, which is invalid XML. The weird part is that it works OK if it is only a single instance of this model or if config_cache_classes == false (a development environment). to_json does not seem to have this problem either. All other models are unaffected as well. A more complete write-up of the problem can be found here.

I am still not able to figure out what causes this behavior and I am currently working around this issue by using some String#split-magic on the result of the to_xml-call. I know this is extremely ugly, so if anybody has experienced a similar problem, please let me know! It’s driving me nuts!

Testing an XML API
What is the best way to test a REST API, besides the Unit-tests that are already in place? Currently, I have an integration test suite, with a lot of testing code that looks like this:

def test_create_project
  post projects_path(:format => :xml),
      {:project => {:description => 'Original description'}}
  assert_response :created
  @new_project_location = headers['location'].first # array?

  get @new_project_location
  assert_response :success
  project_doc = REXML::Document.new(response.body)
  assert_equal 'Original description',
      project_doc.elements['//description'].text

end

It works, but is isn’t very elegant in my eyes. Moreover, all that XML parsing is making the test suite slower and slower. Does anybody have suggestions to build a cleaner and faster test suite for a RESTful XML API? By the way, is there an easy way to POST an XML document rather than “normal” POST-parameters in these calls?

Using mousewheel in the Flash Player on Mac OS X

The Flash Player on OS X currently lacks support for mousewheel events. This means that users cannot use their mousewheel on OS X, in the Floorplanner we use the mousewheel to easily zoom in to your Floorplan. After reading this post from pixelbreaker, I was inspired to implement this in the Floorplanner which was, in fact, very easy. I decided to only use the JavaScript class of pixelbreaker, which sends the mousewheel events to the Flash Player (on the Mac). In the Floorplanner ActionScript this event is handled by our own internal Event management system, which sends the Event to the reponsible part of the code. So thumbs up for pixelbreaker, for making this really easy to implement!

RAPIDoc Rails Rest Api documentation generation, well just RAPIDoc…

Today I setup the first version of a RAPIDoc, a Rest API Rails Documentation Generator and we decided to open source this thing, from now on let’s call it RAPIDoc. It is a API code generator for Rails, describing your Rest resources. We we’re looking for a way to fully integrate documentation of our API into the code base, like Rdoc does. Rdoc didn’t suit our needs, cause it has got nothing to do with Rest and resource stuff, so we decided to hack something together and gave it a name: RAPIDoc.

What does it do?
It generates a API controller containing documenation maked up in a special language. It parses controllers you specify, and generates a ApiController with appropriate views for it. This makes it very easy to document a Rest API. For methods you use, and according to ERB templates you specify it generates the views for you. It doesn’t parse your routes.rb, it was not needed for us, but may be a nice extension for it.

Well how is that RAPI doc looking? Put this in front of a Restful method.

=begin rapidoc
url:: /projects
method:: GET
access:: FREE
return:: [JSON|XML] - some project
param:: page:int - the page
param:: per_page:int - max items per page

Get a list of projects. This method uses pagination. If you want to retreive project 1-10 for example:
/projects?page=1&per_page=10.
=end

For each resource you specify, a view is created and it is put into the index.

Opensource
It is available from now on on:

http://code.google.com/p/rapidoc/

If you find it useful and you want to change some things, become a submitter. Ow yeah, just a note: really experimental code

JSON Validator

I’m currently working on a JSON export from the Floorplanner and I’m glad I found the excelent JSON Validator made by arc90 lab. They made the debugging process a lot easier. Thanks guys!

Finding the correct IP address in Rails

Today, I have added a server switch to Floorplanner.com. Now, it will load the floorplanner elements from the server that is nearest to you, which can yield a significant improvement in the initial loading time of your floorplans.

To determine your location, your IP address is matched against a table of locations. This worked fine in our development version, but it didn’t work at all on the production server. After some searching, I found that our server configuration was causing this. We use Apache as our web server, which uses mod_proxy to send the request to our Mongrel cluster. This intermediary step caused the IP address that Rails would receive to always be the IP address of the Apache server: 127.0.0.1. Therefore, the location matching did not work.

However, I found that mod_proxy adds an additional header to the request with the original IP address: HTTP_X_FORWARDED_FOR. This header can be used for our purpose. Now, I use the following function to determine the correct IP address:

def determine_ip(request)
  # use HTTP_X_FORWARDED_FOR if available
  # otherwise fall back to default header
  request.env["HTTP_X_FORWARDED_FOR"] || request.remote_addr
end

On a related note: to match an IP address against ranges of IP addresses in our location table, it must be converted from a string (”1.2.3.4″) to a number (16909060). I use the following oneliner, which uses some nice functional programming tricks and an application of bit-shifting:

def numeric_ip(ip_str)
  ip_str.split('.').inject(0) { |ip_num, part|
            ( ip_num << 8 ) + part.to_i }
end

Yes, I am really proud if this function! :-)

UPDATE: I just found out that request.remote_ip does the same as my determine_ip-function. Unfortunately, it only works in Rails 2.0.

Consume SOAP web service from Javascript

I wanted to get some data from a web service using Javascript. I looked at several Javascript classes (like this), but because the web service was running on another server it got a little troublesome. As a solution I tried to call the web service through a proxy, but that didn’t make it any easier.

Jaap suggested to take a look at NuSOAP, a -kinda old- SOAP toolkit for PHP. With an AJAX request I could call a PHP page that uses NuSOAP to consume the web service. It was actually easier then I thought it would be.

To make the AJAX call from Javascript I used Prototype and this script:

  function doRequest() {
    var url = "ajax/consume_webservice.php";
    var param1 = "value1";
    var param2 = "value2";
    var params = "param1="+ param1 +"&param2="+ param2;

    new Ajax.Request ( url, { method: 'POST', parameters: params,
      onComplete: onResult } );
  }

  function onResult( result ) {
    alert( result.responseText );
  }

The PHP file consume.php looks something like this:

< ?php

  $param1 = isset( $POST_['param1'] ) ? $POST_['param1'] : false;
  $param2 = isset( $POST_['param2'] ) ? $POST_['param2'] : false;  

  // this is the only file I used from the NuSOAP project
  require_once( "nusoap.php" ); 

  $url = webserviceurl;
  $params = array( "param1" => $param1, “param2″ => $param2 );

  $soap = new nusoap_client( $url, true, false, false, false, false, 0, 60 );
  $proxy = $soap->getProxy();
  $proxy->functionname( $params );

  echo $proxy->response;

?>

That’s all. Do a AJAX request from Javascript to a PHP page. Then the PHP page uses NuSOAP to consume the web service and returns the result. Back in Javascript you can do whatever you want with the given data.

Next Page »

accutane
accutane results
georgia accutane attorneys
georgia accutane lawsuits
hartford accutane attorneys
georgia accutane claims
accutane attorneys los angeles
accutane attorneys san diego
accutane before after
accutane attorneys california
hair loss accutane
accutane dosage
accutane journals
benefits of accutane
accutane and elevated liver enzymes
accutane attorneys
accutane stunted growth
accutane benefits
accutane crohns disease
accutane for sale
accutane hair loss
accutane rosacea
new york city accutane lawyers
accutane journal
cheap accutane
stopping accutane before arthroscopic surger
accutane and results
accutane before and after photos
accutane from canada
accutane laser vision correction
accutane ulcerative colitis
before and after pictures of accutane users
california accutane attorneys
clogged pores after accutane
elevated liver enzymes due to accutane
how long does it take to get accutane out of your system
ipledge accutane
accutane 0a
accutane acne medication 0a
accutane and back acne pictures
accutane and ulcerative colitis
accutane centre mesothelioma litigation lawyer
accutane hair
accutane lawyer
accutane oily skin
accutane risks
accutane works
ipledge accutane program
is accutane the only cure for acne
naposim accutane
what is the most serious side effect of accutane
accutane acne medication acne best counter medicat
accutane after before
accutane and flushing
accutane and height
accutane and rosacea
accutane balding
accutane birth defects
accutane canada
accutane growth
accutane lawyer lawyers attorney attorneys law litigation
accutane personal
accutane scars
accutane soap
accutane statistics
accutane story
accutane vision
dermabrasion accutane
hartford accutane lawyer
houston accutane lawyer
i pledge accutane
liquid accutane
order accutane online
photos of accutane birth defects
post accutane
rosacea and accutane
taking adderall while on accutane
texas accutane lawyer
treatment for dry scalp caused by accutane
use of accutane durring alchohol
what is accutane
withdrawal from accutane
accutane affecting growth
accutane alternative
accutane and back acne and picture
accutane and oily skin
accutane and psycosis
accutane and sun
accutane bextra crestor meridia serevent
accutane board message
accutane buy discount on line
accutane colitis ulcerative
accutane crohns
accutane day 50 results
accutane depression
accutane dermabrasion
accutane final reults
accutane for mild acne htm
accutane hair loss htm
accutane height
adipex
order adipex
cheap adipex
no prescription adipex
adipex p how it works
adipex harmful side effects
how long does it take adipex to work
adipex dangers
adipex without prescription
adipex generic
difference between adipex and phentermine
adipex diet pills
drug adipex
adipex success stories
how adipex works
cheapest adipex online
adipex p
buy adipex online without a prescription
best prices adipex
adipex without a prescription
online pharmacies adipex
adipex no prescription
buy adipex no prescription
adipex online
what are the side effects of adipex
adipex buy inurl
is adipex safe
adipex ingredients
buy adipex online
compare adipex prices
wholesale adipex
buy adipex online saturday delivery
adipex p lawsuits
active ingredients in adipex
safe is adipex p
buy adipex without a prescription
lowest price for adipex
adipex weight loss pills
adipex diet pill
cheapest adipex diet pill
adipex cheapest price
adipex testimonials
how much weight can i loose with adipex
what is adipex
low cost adipex
no prescription needed adipex
side effects of adipex
buy adipex
cheapest generic adipex online
adipex review
herbal adipex
online prescription for adipex
adipex hurt me
generic adipex
adipex cod
adipex p side effects
sites to purchase adipex
how does adipex work
adipex atlanta
adipex ionamin meridia phentermine weightloss
free adipex
ordering adipex without a prescription
adipex online prescription
better phentermine or adipex
adipex versus phentermine
adipex lose weight loss diet pills
adipex no prescription 3 month supply
adipex side effects
adipex side effects brain
phentermine adipex
adipex online prescription approved
rx adipex
online doctor consultation adipex
adipex no precsription
cheap adipex without a prescription
generic name for adipex
adipex prescription
burn fat lose weight adipex diet pill
how effective is adipex
online consultation adipex prescription low cost
order adipex online
adipex no rx
adipex with no prescription
adipex without rx
discounted adipex
purchase adipex p online no perscription
what are the long term effects of adipex
adipex weight loss diet
buy adipex discretely
does adipex work
purchase adipex online
adipex abuse
adipex alternatives
adipex buy
adipex no imprint
adipex witthout a prescription
buy adipex without prescription
diet pills adipex free ship
discount adipex diet pill
is adipex dangerous
cialis
cheapest cialis
generic cialis
buy cialis online
cialis generic
cialis for order
cialis to buy new zealand
cheap cialis
buy cialis online now
cialis uk suppliers
cialis online
cialis cost
compare cialis levitra viagra
viagra cialis levitra
lowest prices for cialis
levitra cialis
cialis injury attorney columbus
cialis compare levitra viagra
levitra vs cialis review
cialis and levitra
cialis comparison levitra
cialis injury attorney ohio
cialis uk
buy cialis
viagra levitra cialis
cialis levitra
cialis levitra sales viagra
cialis attorney columbus
cialis imperial levitra libidus viagra yohimbe
blindness cialis levitra
cialis levitra link pharmacies com viagra
cialis professional
cialis vs levitra
compare levitra cialis versus viagra
cialis levitra prescriptionscom
cialis levitra viagra vs vs
cialis viagra levitra effects
levitra cialis viagra comparison
which is better viagra cialis or levitra
buying generic cialis
levitra and cialis and viagra
cialis viagra levitra
viagra levitra cialis pharmacist prescription drug
viagra medication prescription levitra cialis propecia
cialis lawyer columbus
cialis lawyer ohio
cialis levitra online
cialis levitra pharmacycom
discount cialis
cialis injury lawyer ohio
cialis levitra vs
comparison of cialis levitra and viagra
2003 cialis levitra market sales viagra
cialis and levitra viagra
cialis dosage
cialis drug drug levitra pharmacist prescription
cialis levitra sale viagra
levitra vs cialis
cialis attorneys
cialis generic levitra viagra
cialis levitra pharmacy viagra
levitra cialis viagra
cialis injury lawyer columbus
cialis levitra viagra
comparison study of viagra cialis levitra
comparison viagra levitra cialis
viagra vs cialis
viagra vs levitra vs cialis
cialis dysfunction erectile levitra viagra
cialis without prescription
compare viagra cialis levitra
levitra versus cialis
viagra levitra cialis comparison
what is the generic name for cialis
cialis attorney ohio
cialis comparison levitra viagra
cialis in uk online
cialis side effects
levitra cialis for women
which is better3a viagra2c cialis or levitra
cheap generic cialis
compare cialis levitra
viagra levitra cialis apcalis regalis zenegra
cialis levitra link viagrablogspotcom
comparison viagra cialis levitra
levitra cialis compare
low cost cialis
cheaper viagra levitra cialis
cialis compare levitra
cialis levitra link pharmacies.com viagra
cialis levitra link pharmaciescom viagra
cialis message board
cialis pricing
compare levitra and cialis
comparison of viagra2c levitra and cialis
discount cialis levitra viagra
ditka sound clip levitra cialis
which is better viagra levitra cialis
buy viagra cialis levitra
buy cialis soft
buy soft cialis
soft cialis
cialis soft tabs cheap
cialis soft tab
cialis soft tabs
cialis soft
cialis soft gel
cialis soft tab rss feed
what is cialis soft
cialis
comprar cialis
cialis generico
cialis y alcohol
cialis viagra levitra
cialis y el alcohol
cialis viagralevitra
comprar cialis zaragoza
cialis viagra
tadalafil
tadalafil generico
comprar tadalafil
tadalafil tablets
tadalafil 20mg
tadalafil 20
tadalafil generico
comprar cialis
comprar cialis en linea
acheter cialis
cialis acheter en ligne
acheter cialis en ligne
acquistare cialis
acquistare cialis online
fioricet online
fioricet info soma carisoprodol
fioricet without prescription si
discount fioricet
order fioricet no prescription
butalbital fioricet
carisoprodol fioricet hydrocodone insurance tramad
buy fioricet with codeine online
fioricet with codeine
cheapest fioricet
fioricet on line
fioricet generic
purchase fioricet tablets watson
cheap fioricet online
is fioricet a narcotic
fioricet with codine
fioricet online no prescription
order fioricet without prescription
fioricet tablets
generic fioricet online
fioricet online generic saturday delivery
no prescription fioricet
fioricet without prescription
fioricet tramadol
fioricet ultracet
fioricet order overnight no prescription
fioricet us pharmacy
fioricet online pharmacy
fioricet carisoprodol hydrocodone tramadol
fioricet migraine medication
who makes generic fioricet
fioricet codeine withdrawal symptoms
fioricet side effects
fioricet tab
fioricet message propecia htm
fioricet addiction
fioricet cheap online
taking fioricet while pregnant
buy fioricet online free fedex
fioricet and prometrium
buy fioricet online buying fioricet fioricet
fiorinal fioricet
how long does fioricet stay in your system
fioricet specials
is fioricet a controlled substance
fioricet rss feed
buy generic fioricet
press release fioricet imitrex trea
fioricet alcohol
where can i buy fioricet online
reaction to taking fioricet and fiorocet with codeine
what schedule is fioricet
imitrex in fioricet
fioricet 0c7e2xe
generic fioricet
zenegra fioricet
fioricet withdrawl
fioricet cod order
fioricet imitrex
fioricet cheap today
description of fioricet
fioricet rebound headache
fioricet without presc
cheap fioricet
fioricet online cheap
buy fioricet brand name
fioricet and pregnant
fioricet used for
during fioricet pregnancy
fioricet safety breastfeeding
effects of fioricet
fioricet lactation
i love fioricet
fioricet 50 325 40
best fioricet dosing advice for high
best fioricet dosing advice for euphoria
fioricet erowid
order fioricet
buy fioricet online without prior prescription
my fioricet fiorcet migraine
fioricet increased energy
fioricet prescription addiction
what does fioricet look like
pravachol bontril fioricet
migraine medications fioricet
detox fioricet
fioricet overnight
fioricet saturday delivery
cheap fioricet cash on delivery
order cheap fioricet
buy cheap generic fioricet
fioricet ibuprofen htm
fioricet ship to fedex terminal
cost of fioricet
order fioricet saturday delivery
fioricet soma
addiction fioricet
buy fioricet cod
fioricet withdrawal
fioricet soma tramadol viagra
levitra
cheap levitra
buy levitra online
buy levitra
generic levitra
levitra dangers
compare cialis levitra viagra
viagra cialis levitra
levitra versus viagra
cheapest generic levitra
levitra cialis
levitra guaranteed cheapest online
order levitra
discount levitra
levitra online
cialis compare levitra viagra
levitra news
levitra viagra
levitra vs cialis review
looking for levitra
cialis and levitra
cialis comparison levitra
what is levitra product
viagra levitra cialis
actress commercial levitra
cialis levitra
cialis levitra sales viagra
levitra samples
where to buy levitra
cialis imperial levitra libidus viagra yohimbe
compare levitra price
levitra prescription
levitra tv commercial actress27 name
blindness cialis levitra
cialis levitra link pharmacies com viagra
cialis vs levitra
drug testing levitra
levitra clinical data
levitra germany
levitra now online
viagra vs levitra
buy levitra where
cheap levitra tablet
cheaper viagra levitra apcalis
compare levitra cialis versus viagra
compared levitra viagra
comparing viagra2ccialis2c levitra
efficacy levitra
information on the price of levitra in the us and
levitra generic
online levitra
purchase levitra
cialis levitra prescriptionscom
cialis levitra viagra vs vs
cialis viagra levitra effects
comparison levitra viagra
cost levitra
exchange levitra link
levitra canada
levitra cialis viagra comparison
levitra dosage
levitra for women
levitra increase effect stronger harder
levitra low price
levitra result
what is levitra
which is better viagra cialis or levitra
cheap levitra order prescription
full information levitra
information levitra prescribing
kit levitra slide
levitra and cialis and viagra
levitra buy
levitra cost
levitra ppt
side effects of levitra
alcohol levitra
buy en language levitra
cialis viagra levitra
compare levitra
drug for impotence levitra
flonase levitra metrogel metrogel myonlinemeds biz
levitra 20mg
levitra ad
levitra cme
levitra en mexico
order levitra on line
prescribing levitra
viagra levitra cialis pharmacist prescription drug
viagra medication prescription levitra cialis propecia
watch the levitra commercial
brochure levitra
buy levitra online viagra
cheap generic levitra
cialis levitra online
cialis levitra pharmacycom
levitra
cialis viagra levitra
se puede tomar alcohol con levitra 10mg
comprar levitra 5 mg generico
levitra espana
venta de levitra
levitra forma comercial
levitra pvp
viagra versus levitra
vardenafil
comprar vardenafil
comprar levitra
comprar levitra en linea
acheter levitra
acheter levitra en ligne
levitra acheter en ligne
acquistare levitra
acquistare levitra online
meridia online pharmacy
loss meridia pill weight
cheapest meridia
meridia phentermine
meridia pharmacy online sale
online pharmacy meridia international
diet meridia pill safe
cheap meridia free consultation
cheap meridia 1
cheap online meridia
meridia pharmacy purchase
is meridia covered by health insurance
diet pills meridia
meridia diet medication
cheap meridia with money order
meridia cheap online
celebrex meridia
sibutramine meridia diet pills review
order meridia
meridia weight loss medicine
meridia and wellbutrin together
generic meridia shipping
buy b meridia b
meridia pill
cheapest generic meridia canada
drug loss meridia meridia weight
generic meridia 15 mg
buy meridia onsubmit
buy meridia from american doctors
online adipex meridia phentermine prescription viagra
meridia prozac
buy meridia
loss meridia review weight
best price for meridia generic only sibutramine
meridia diet pills
meridia weight loss pill
looking for a discount coupon for meridia
meridia and xenical combination
meridia xenical
pills weight loss meridia
meridia cheapest fastest
meridia diets
buy cheap meridia online
lowest price buy meridia
online meridia from dreampharmaceuticals
forum meridia xenical
meridia find online
international meridia online pharmacy
pharmacy meridia
xenical and meridia combination
meridia online
meridia phone systems
effects meridia side
discount meridia
dream meridia online pharmaceutical
diet drug manufacturer meridia who
are meridia diet pills safe
discount rx meridia
loss meridia result weight
how to take meridia
side effects meridia
diet meridia pill prescription prior without htm
meridia is an oral prescription medication used for the
meridia weight loss result
prescription and diet and meridia
diet drug meridia
meridia and wellbutrin
meridia wieght loss pill
meridia diet pill
diet fact meridia pill
diet meridia pill htm
maintained their lost weight with meridia
meridia hospital
meridia mx
search meridia online
meridia online canada
meridia weight loss story
loss medication meridia weight
discount meridia no md visit
discount meridia rx
buy meridia online
meridia attorneys
florida meridia
info meridia
meridia tabletki
meridia safe
meridia canada
how much weight will i lose on meridia
adipex meridia phentermine xenical
meridia w polsce
meridia lawyers opp
sprzedam meridia
meridia coupon
information meridia
tablet meridia
meridia legal
generic meridia fda approved
meridia diet plan
meridia online pharmacy phentermine xenical
phentermine
cheap phentermine
phentermine 37 5mg
phentermine side effects
phentermine without prescription
generic phentermine
phentermine cheap
phentermine 37.5 mg
phentermine no prescription
discount phentermine
phentermine and methamphetamine
how does phentermine work
buy phentermine
extra cheap phentermine
phentermine without a prescription
site3aromkafegreatnowfecom phentermine
buy phentermine online
phentermine very cheap
difference between adipex and phentermine
cheap 37 5 phentermine
phentermine online
strongest phentermine
purchase phentermine online
phentermine side effects dangers
herbal phentermine
buy phentermine online with paypal
side effects of taking phentermine
phentermine 6 pm order
phentermine diet pills
phentermine no rx
is phentermine safe
no prescription phentermine
low cost phentermine
phentermine overnight
cheap phentermine free shipping
phentermine forum
buy cheap phentermine
phentermine tablets
cheap phentermine without a prescription
phentermine uk
phentermine online consultation
phentermine without rx
phentermine hcl
where can i buy phentermine without a prescription
buy phentermine cod
cheapest phentermine
phentermine pill online discount
phentermine without perscription
wholesale phentermine
phentermine cash on delivery
is phentermine dangerous
long term phentermine use
phentermine 30mg
phentermine cod
buy phentermine without prescription
overnight phentermine
cheap phentermine online
cheap phentermine without prescription
discount phentermine cod
negative side effects of phentermine
order phentermine online
phentermine 30 mg
phentermine 37.5 no prescription
phentermine free consultation
phentermine no script
phentermine overdose
what pills look like phentermine
levitra lipitor online pharmacy pharmacy zoloft phentermine
order phentermine
phentermine at discount prices
phentermine atlanta
phentermine online no rx
phentermine overnight saturday delivery
phentermine prescription online
phentermine tenuate
do meridia phentermine work the same
levitra low price pharmacy zoloft phentermine viagra
phentermine studies
phentermine warnings
adipex ionamin meridia phentermine weightloss
buy phentermine no prescription
buy phentermine without a prescription
online phentermine
phentermine or prozac for bulimia
purchase phentermine with no prescription
what is phentermine
better phentermine or adipex
does phentermine work
duromine phentermine diet pills
phentermine diet pill
phentermine price comparison
purchase phentermine 37.5 mg without prescription
rx assist phentermine
adipex versus phentermine
can i take phentermine with zoloft
cheap phentermine no prescription
generic versions of phentermine
negative side effects from phentermine
no rx phentermine
pharmacies to purchase phentermine 37.5 mg with perscription
propecia
generic propecia
viagra medication prescription levitra cialis propecia