Filed Under (Alfresco, Web Scripting, UI, Web 2.0, iPhone, iAlfresco, iUI) by admin on March-14-2008

iPhone NavigatorI built a simple yet very useful Alfresco navigator for iPhone. In nutshell, it is an iPhone-friendly web client. This navigator is backed by three webscripts ( one for DM space/doc navigation, one for WCM navigation and one for search) and leverages open source iUI package to provide looking-n-feel. The performance of the navigator is pretty good on iPhone (with its slow Edge network) since the script basically shows different branch of a single DOM tree based on where you are and when you navigate down to a new space or web project directory it will add the new nodes to the tree.

The navigator gives you following capabilities

  • Navigate Spaces and Docs
  • Display topics/posts attached to the docs.
  • Preview Images, PDFs etc.
  • Navigate Web Projects
  • Preview Web Sites
  • Search

To install the package on your Alfresco, simply follow following steps

  • Unzip dist/iui.zip to {your tomcat directory}/webapps/alfresco/scripts
  • Import dist/iphone-navigator.zip to your alfresco installation and put it under Data Dictionary/Web Scripts Extensions
  • Refresh webscripts or restart Alfresco.
  • Test the navigator

Or you can check out the flash.



Filed Under (Alfresco, Web Scripting, Social Tagging, Web 2.0) by admin on July-30-2007

Nowadays, if you are working in IT industry, it is really important to know something about web 2.0 or at least pretend to know something. The great thing about web 2.0 is that nobody can really give it a clean clear definition. Therefore, you can put the web 2.0 hat on anything and you won’t get into any trouble.

Anyway, Social Tagging has been a popular web 2.0 technology for a while and has been widely used by quite a few photo sharing web sites. In nutshell, a piece of content doesn’t really have a lot of information or value by itself. For example, you have a picture of a beautiful model dressing in bikini and posing on a sunny beach. Well, the picture looks great but for other users they have to see it to know what the picture is all about. It is apparent that we must provide ways to enrich the content with context information for things like content search, content categorization, content reuse etc. One traditional approach is to build taxonomy and associate it with content. That is more like top-down approach which means in most scenarios the content owner or administrator will provide the context information. For social tagging, it takes the bottom-up approach which means the context information will come from the content users. That is web 2.0 all about, collaboration. If we use the picture as example, we can have multiple people viewing it and all providing tags such as Beach, Beautiful Woman, Sunny and so on. The tag list can keep growing with more people viewing it and contributing the tags. And people can tag it with same tags which shows the voting and ranking of the picture. Now you can see the clear advantage of letting the users to provide context information.

So, this sounds like really cool stuff. Let us start a little project and build a simple social tagging system using Alfresco Web script.

Let us called it “Poor Man’s Social Tagging”.

The goal of the project is to build a system

1) Allow content users to contribute tags to pictures.

2) For each picture it provides statistical information such as total number of unique tags, total number of tags, most popular tag etc.

3) Show the tags in a fashion that user can easily see the differences of times it has been tagged.

4) Allow searching picture by tag.

5) Provide the list of most popular tags.

6) And we will do it in two hours.

Again, we will keep it simple. We will use following tools

1) Alfresco 2.1

2) Textpad

3) Firefox with firebug plug in.

And we will mount Alfresco repository as shared drive so that we can create web scripts within Alfresco directly.

First, we need to figure out the Data Models for our social tagging project. Alfresco provides very sophisticate and flexible modeling capabilities for modeling content meta-data. Here is the snippet of the model XML file.

<types>
<type name=”st:socialtag”>
<title>Social Tag</title>
<parent>cm:content</parent>
<properties>
<property name=”st:keyword”>
<type>d:text</type>
</property>
<property name=”st:count”>
<type>d:int</type>
</property>
</properties>
</type>
</types>

<aspects>
<!– Definition of Aspect –>
<aspect name=”st:socialtaggable”>
<title>Social Taggable</title>
<properties>
<property name=”st:mostpopularkeyword”>
<type>d:text</type>
</property>
<property name=”st:mostpopularkeywordcount”>
<type>d:int</type>
</property>
<property name=”st:totalnumberoftags”>
<type>d:int</type>
</property>
<property name=”st:totalnumberofcounts”>
<type>d:int</type>
</property>
</properties>
<associations>
<child-association name=”st:contains”>
<source>
<mandatory>false</mandatory>
<many>false</many>
</source>
<target>
<class>st:socialtag</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
<duplicate>true</duplicate>
</child-association>
</associations>
</aspect>
</aspects>

From the above model XML file, you can see we will model Tag as Alfresco document with two additional properties, keyword for tag name and count for keeping the total number of the times the tag has been used. We also setup a new aspect, socialtaggable, which we will add it to all pictures. The new aspect not only includes the properties for statistical information but also has the child association which allows us to associate tags to the pictures. Keep in mind, that every time we add a new tag to a picture, we create a new copy of the tag. So we can maintain counters of tagging for individual pictures and all pictures separately.

Once the model is ready. We can copy the model XML file and its bootstrap XML file to Alfresco extension folder. In order to use Alfresco Web Client to test the new content type and new aspect, we also need to change the web client configuration file, web-client-config-custom.xml which is also under the Alfresco extension folder. Once they are in place, we restart Alfresco to pick up the changes.

For this project, we will create a “Social Tags” space under Company Home. We then create a subspace, “Tags”, which will be used to hold all tags, and another subspace, “Pictures”, which will be used to hold all pictures. Since it will be Social Tagging, all users will be allowed to create tags and modify pictures properties. We need to add “Guest” user as “Content Collaborator” for the space “Social Tags”.

With all the setup done, we now need to write our web scripts. For this project we will have three web scripts.

Picture List script In the front end, it provides a sortable list of pictures and dialogs for showing and adding tags. It will also provide link to the top tag list. In the back end, it will execute query to get the list of picture and for new picture, it will also add the socialtaggable aspect to it and filter the list with a particular tag if the search-by-tag parameter is provided. Here is the snippet of the back-end JavaScript

// Get the list of nodes from DM
var luceneSearchStr = “( PATH:\”/app:company_home/cm:Social_x0020_Tags/cm:Pictures/*\” ) AND ( TEXT:”+ q+”)”

var nodes = search.luceneSearch(luceneSearchStr);

for (var i=0; i<nodes.length; i++)
{
var node = nodes[i];

logger.log(”Node path is “+ node.path);

if (node.hasAspect(”st:socialtaggable”) == false)
{
node.addAspect(”st:socialtaggable”);
node.properties[”st:totalnumberofcounts”] = 0;
node.properties[”st:mostpopularkeywordcount”] = 0;
node.properties[”st:mostpopularkeyword”] = “”;
node.properties[”st:totalnumberoftags”] = 0;
node.save();
}

Tag Adding Script This script takes the tags from the Picture List scripts. If the tag doesn’t not exist, it will create a new one. Otherwise, it will update the counter of the existing tag. It will then associate the tag with the picture. If the association is already there, it will simply update the tag counter for the picture. Otherwise, it will create a new association. Here is the snippet of the back-end JavaScript

var tagsFolder = companyhome.childByNamePath(”Social Tags/Tags”);
// Get the list of tags
var tags = newtags.split(”;”);

for (var i=0; i< tags.length; i++)
{
var tag = tags[i];
var searchResults = companyhome.childByNamePath(”Social Tags/Tags/”+tag);
if ( searchResults != null) {
// If the tag exists, Get the tag
var existingtag = searchResults;
existingtag.properties[”st:count”]= existingtag.properties[”st:count”] + 1;
existingtag.save();
} else {
// Otherwise, create a new tag
if ( tagsFolder != null ) {
var newtag = tagsFolder.createNode(tag, “st:socialtag”);
newtag.properties.description=tag;
newtag.content=tag;
newtag.properties[”st:keyword”]=tag;
newtag.properties[”st:count”]=1;
newtag.save();
}
}
// If the tag has already been associated, simply increase the count.
// Otherwise, create a new child association
var childNodes = node.childAssocs[”st:contains”];
var foundtag = false;
if ( childNodes != null ) {
for (var j=0; j < childNodes.length && !foundtag; j++) {
var loopNode = childNodes[j];
if (loopNode.properties[”st:keyword”] == tag ) {
loopNode.properties[”st:count”]= loopNode.properties[”st:count”] + 1;
loopNode.save();
foundtag = true;
}
}
}
if ( !foundtag ) {
//If the association is not there, create a new one.

var child = node.createNode(tag, “st:socialtag”, “st:contains”);
child.properties.description=tag;
child.content=tag;
child.properties[”st:keyword”]=tag;
child.properties[”st:count”]=1;
child.save();
}
// Populates the stats
childNodes = node.childAssocs[”st:contains”];
node.properties[”st:totalnumberoftags”] = childNodes.length;
var count = 0 ;
var maxcount = node.properties[”st:mostpopularkeywordcount”];
var mostpopulartag = node.properties[”st:mostpopularkeyword”];
//Update the most populate tag

for (var k=0; k < childNodes.length ; k++) {
var currentNode = childNodes[k];
if (currentNode.properties[”st:count”] == 0) {
currentNode.properties[”st:count”] = 1;
currentNode.save();
}
if ( currentNode.properties[”st:count”] > maxcount) {
maxcount = currentNode.properties[”st:count”];
mostpopulartag = currentNode.properties[”st:keyword”];
}
count = count + currentNode.properties[”st:count”];
}
node.properties[”st:totalnumberofcounts”] = count;
node.properties[”st:mostpopularkeywordcount”] = maxcount;
node.properties[”st:mostpopularkeyword”] = mostpopulartag;
}

//Save the node

node.save();

Tag List Script. This script provides a sortable list of all existing tags.

For the overall UI, we will continue using the DoJo package shipped with Alfresco. We will mainly use the FilteringTable widget and Dialog widget.

Now let us register the three web scripts with Alfresco and hit the front page.

http://localhost:8080/alfresco/service/socialtag/document/list.html

One more thing, the authentication setting for all scripts are set as Guest. So you can just login as guest/guest to try out our Poor Man’s Social Tagging.

I think you gotta love Web Script since it makes so many things look so easy. For a relatively “superficial” developer like Dr. Q., it only takes him about two hours to build a not-so-shabby Social Tagging system.

So for better developers like you, you can definitely build much cooler stuff using Alfresco.

If you want to check out this little project, here is the zip file(Social Tagging).

Again, you need to

1) Setup the custom model (core\config\alfresco\extension).
2) Register three web scripts (webscripts\source\org\alfresco\demo\wslib\socialtag) and add the three dojo images(core\webapp\images\dojo) to tomcat\webapps\alfresco\images\dojo.

3) Setup three folders as described above and upload some pictures.

Here are some screen shots. Enjoy!
Screen Shot 1Screen Shot 2

Screen Shot 3Screen Shot 4

 

 

 

 

 

 

 

 

 



Filed Under (Alfresco, Web Scripting, UI) by admin on July-23-2007

Alfresco does provide a very decent, clean user interface. We could add more buzz words for it, web2.0ish, Rich Ajax components, Google-style search, Yahoo-style browsing blah blah blah You name it we have it.

But the best thing I like it is that it allows multiple ways for customization and extension. You can easily replace existing icons, register your own icons, setting up new dialogs, menus, wizards etc. You can also create your own “dashlets” which can be used to configure user’s dashboard page.

However, I still got feedbacks like

“Writing a customization is too much”

“We really like Alfresco repository but your UI is too much for end users”

“We don’t have good Java developers and we don’t plan to hire one”

“We just need a simple one-page UI so the users won’t do any crazy stuff”

“CIFS is great for end-user but we still want some simple web interface”

Those feedbacks have been bugging me for very long until Alfresco 2.1 is out. I know now I can leverage the new futures to make those claims go away.

So when I woke up this morning, I decided to do a little project. I am going to use the latest web scripting feature of 2.1 to build a dead simple one-page UI for Alfresco. For the sake of acronym fetish, let us call it DSUFA.

The tools I am going to use

1) Alfresco 2.1

2) Textpad

3) Firefox (with Firebug plugin)

Since there is no bonus for doing this project, let me simplify the user case like this

We have a group of users who have very limited role and they are only allowed to list, create, delete, update and preview documents under a given folder, say Demo folder under Company Home. They will not use full-blown Alfresco UI, instead, we will use web scripts to write a simple one-page UI for them.

Web scripting is a very intriguing new feature in 2.1. It is not something mysterious or coming out from nowhere although we do invent a new buzzword. That is just the nature of the whole IT industry. Open source is no exception.

Alfresco has long history supporting Freemarker templates (Read/Transformation) and Javascript templates (Read/Write). Web scripting is just combination of the two types of scripts. Each web script consists of zero or one Javascript template for handling back-end operation, one or many Freemarker templates for front-end presentation, and one description XML for documentation and other relevant settings. It also comes with utility services such as listing , debugging etc. But the most important thing is that invoking a web script is done through REST interface a.k.a simple URL invocation. I think that would be something people will like most.

Ok. back to our DSUFA project, we first need to setup our development environment. We could setup an ant script and build an exchangeable AMP package. But let us make it simple. So just mount Alfresco repository as a share driver,say Z drive, and point Textpad to it.

By doing that, we will edit the templates and XML files directly, no uploading, no downloading. Another cool feature of web scripting is that it doesn’t require tomcat rebounce when we register new web scripts. We can just go to the service list page

http://localhost:8080/alfresco/service/index

and click the the refresh button. So no tomcat rebounce for the whole project.

Now let us open windows explorer and go to the folder Z:\Data Dictionary\Web Scripts Extensions and let us make up some package hierarchy, for example, org\alfresco\demo\wslib\simpleui and that will be the place we put our web scripts.

So how many web scripts do we need here? It is a simple question, since we need to provide list, create, edit and delete capabilities, we are going to create a web script for each capability.

Sequence Diagram

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

To make the project look like a real one, let us draw a sequence diagram. The idea is that the List web script will be the entry point for the end user and it also provides links to the Save web script, New web script and Remove web script. For those three scripts, once the back-end operation is done, they will forward user back to the List script. Since web scripts supports REST interfaces, connecting web scripts is a very easy task.

So, let us work on our first web script, the List one. Following the naming convention, we create three files, DocumentList.get.desc.xml (XML Description File), DocumentList.get.html.ftl (Freemarker Template) and DocumentList.get.js (Javascript Template) .

First the description xml file

<webscript>
<shortname>Alfresco Simple UI - Item Listing</shortname>
<description>Execute search for getting a list of items</description>
<url format=”html” template=”/simpleui/document/list.html?q={searchTerms}”/>
<format default=”html”>extension</format>
<authentication>guest</authentication>
<transaction>required</transaction>
</webscript>

and the back-end Javascript template

//Get the search parameter. If null, set it as wildcard

var q = (args.q == null) ? “***” : args.q;

// Build lucene search query string and run the search
var nodes = search.luceneSearch(”( PATH:\”/app:company_home/cm:Demo//*\” ) AND ( TEXT:”+ q+”)”);

//Set the search return and it will be available for the Freemarker template
model.resultset = nodes;

Look simple? You can see we define the REST interface within the XML file and use Alfresco search API to get the list of documents. So three lines of code is all we need here.

Once we retrieve the search results, we are ready to display the results through our Freemarker template.

<table>
<thead>
<tr> <th>Name</th><th>Created</th><th>Modified</th><th>Description</th><th>Body</th>
</tr>
</thead>
<tbody>
<#list resultset as node>
<tr>
<td>${node.name}</td>
<td>${node.properties.created?datetime}</td>
<td>${node.properties.modified?datetime}</td>
<td>${node.properties.description}</td>
<td>${node.content}</td>
</tr>
</#list>
</tbody>
</table>

 

This is nothing but using some freemaker tags to loop through the search results and display them as a table. Now we are ready to test our first web script. Go to the service list page and do a refresh. You will see the new script is registered. And we can testing our script by hit the following link

http://localhost:8080/alfresco/service/simpleui/document/list.html

If we have created the Demo folder and put some documents over there, we will get a list of documents. Now let us move on to create three other scripts. Remember, according to our design, the freemark templates for those three do nothing but forwarding back to the List page. So they can be as simple as

<META
HTTP-EQUIV=”Refresh”
CONTENT=”1; URL=${url.serviceContext}/simpleui/document/list.html”>

Once we get three other web scripts ready, let us go back to the Freemaker template for the List web script. We still need to build the links from List page to other scripts. Remember Freemarker template does nothing but printing out text. So we are free to put any Javascript or HTML in it.

A link from List page to the Remove web script can be as simple as

<form name=”remove_form” action=”${url.serviceContext}/simpleui/document/remove” method=”post”>
<table>
<tbody>
<tr>
<th><b>Remove File </b><INPUT type=”text” id=”remove_name” name=”name” value=”" disabled/></th>
</tr>
<tr>
<td>Do you really really really want to delete this file?</td>
</tr>
<tr>
<td align=”center”>
<INPUT type=”hidden” id=”remove_noderef” name=”noderef” value=”"/>
<INPUT type=”hidden” id=”remove_name” name=”name” value=”"/>
<input type=”submit” value=”Ok”/>
<input type=”button” id=”hide3″ value=”Cancel” onClick=”removedlg.hide()”></td></td>
</tr>
</tbody>
</table>
</form>

This is just a plain old HTML form which points to the url for the Remove web script. Now, you see, REST interface makes everything really really easy.

We are almost done. Let us have some fun here. To make the UI sexy, we can use the DoJo package shipped with Alfresco 2.1. For this little project, I will use the “FilteringTable” widget for document listing and the “Dialog” widget for the Edit/New/Remove dialogs.

After some Javascript/css/dhtml programming, (googling, copy-n-pasting), we finally got the UI done. It is a dead simple Web2.0ish one-page UI for Alfresco. It allows a user to create/edit/list/preview and remove documents under the given folder.

No java programming is needed here. It took me about 2 hours to finish the project. And I bet for better developers like you, it might take even less time.
If you want to try this example, you can download the zip file (Script Package dsufa.zip). Unzip the org folder to your Data Dictionary\Web Scripts Extensions space. Unzip the dojo folder to the folder tomcat\webapps\alfresco\images under your alfresco installation. Then go to the service list page to register all new scripts and create a “Demo” space under Company Home.

Screen Shot 1

Screen Shot 2

 

 

 

 

 

 

You are now ready to try this dead simple UI.



Filed Under (Personal, Thoughts) by admin on July-19-2007

Don’t you have enough of reality shows. We have seen shows about singing, dancing, cooking, surviving, losing weights, showing bizarre talents and so on and so on. We have see shows about one man and a bunch of women, one woman and a bunch of men, one men and a bunch of young women and a bunch of old women.

I bet the entertainment world is gradually running out ideas.

Here is a brand new idea.

It is a good time to do a show about developers, yes, the IT developers.

We sure need to find bunch of people with different background.

Diversity is important here.

So we will have man, woman, white, yellow, black, asian, latino, young, old blah blah blah…

They are all required to wear a T-shirt with his or her slogan on it.

We should have a google developer

“I am having free dinner every day and I am going to buy your company anyway.”

a Microsoft developer

“Most stable, reliable secure stuff but please reboot for updates.”

a Unix developer

“Nothing can’t be done from command lines.”

a Yahoo developer

“We used to have free dinner.”

a Mac developer

“I am cool. Can I put an i in front of you?”

a Java developer

“We used to be cool.”

a Script developer

“One click and you get everything.”

a poor guy from China or India

“I am smart and I am cheap before I get my green card.”

And finally a little fearless open source warrior

“Everything open and free!!!!”

Technorati Tags: ,

Powered by ScribeFire.



Filed Under (Alfresco, Sudoku) by admin on July-14-2007

I have been traveling to NYC over the last two weeks to help a consulting firm to build a web site for little kids. Yeah…They use Alfresco. It has been fun so far to be able to see how people actually use Alfresco in the real project.

Having been working at home for the last eight months, I feel quite excited to be back to the cubical world. Or..maybe just for a few days. Plus, instead of messing up with sales people, now I have chances to work with developers and project managers. Well…they are quite different. They take me to all wonderful sandwich shops around their office for lunch. Last Thursday night, they even took me to a nice restaurant for dinner. It is actually a chocolate bar. The food is nice and the hot chocolate is real…hot melted chocolate.

Now back to “Alfresco on Train”. I have been taking trains back and force between Boston and New York City. Taking train is much better experience than going through Logan and JFC which might be among the worst airports in the world.

It is about 3 and half hours ride. The train is clean and spacious. Generally, I would take a nap, listen to music and sometimes talk to strangers. But now I have put “Start to write blog” as my quarterly MBO. I figure I really need to find something to write so that I could meet my MBO and Matt would pay me all bonus and I could buy more toys for my daughter.

So it is important now. After searching through my soul, I do have all a lot to say about Alfresco, Open Source, IT and life in general. But I guess to keep it interesting, I need to write about something I am familiar with…Yeah…the Alfresco product.

One of my favorite TV show is “Top Chef” even I only watched one episode so far. The competition they had was to cook a dish in two hours using selected meats. Maybe I can do the similar thing, I can start my own little “Alfresco on Train” project on the train.

I will use the three and a half hour on the train and use the latest version of Alfresco plus some other open source software to build a “dish”.

Then what I am going to build? It must be something interesting, unique, useless and can keep my blog going for a while.

I then had an idea of the game of Sudoku. I have been playing that puzzle game for a while and I really like it.

Ok…Let’s get started.



Filed Under (Uncategorized) by admin on July-12-2007

A good joke about Hello world!

http://www.gnu.org/fun/jokes/helloworld.html




ibuprofen and miscarriage prilosec shortage in wis interaction of zanflex and lisinopril what is colchicine pill xenical in northern ireland liver problems caused by tetracyclines sealy modena ortho mattress low dose of paxil for menopause carisoprodol online what do steroids come from difference between desloratadine and loratadine nardil alternative morphine in pregnantly 3d marijuana layout dayquill amphetamine side affects singulair medicine coumadin dosing protocol baystate springfield impact of wellbutrin prednisone antibodies order phentermine and ship to arkansas info about weed lsd shrooms can prilosec cause sleepiness and tiredness buy online premarin can marijuana be found in blood akane soma torrent base amphetamine vicks inhaler is brand-name zithromax better than generic bags buy phentermine finasteride breast is cyclobenzaprine addictive yasmin s profile articles heaven what is the best ecstasy nexium how works fioricet mia kenalog allergy shot nevada marijuana fungi penicillin mdma facts combivent inhalation aerosol symptoms of zoloft withdrawal risks of xanax adderall a b outdoor marijuana arrests in new jersey lotrel 5 40 soma order lipitor and muscle pain and weakness paroxetine en ortho evra transdermal patch marijuana alternatives reviews diltiazem weak bladder osteoporosis and coumadin medical treatment of withdrawal fron xanax new york vioxx claim side effects from naltrexone pcp in many different forms cold congestion severe tylenol keflex info sheet is restoril a narcotic synthesis of celebrex oral erosive lichenplanus lisinopril hydrochlorothiazide enalapril oral and vertigo problems effexor in children atenolol side effects in cats back hair testosterone therapy dave chappelle marijuana commercial spoof sugar in azithromycin does toprol xl cause nausea tylenol iii can ibuprofen cause weight gain zocor online pharmacy morphine sulfate brown pills medical marijuana 90038 mixing ibuprofen and acetaminopen cleaning marijuana bowl prescription ultram er clonazepam celexa combination lotion collagen retin seaview ortho nj brick zovirax prices is ultram stronger than vicoden phil baroni steroids marijuana genetics obama legalizing marijuana no prescription phentermine 37.5 mg tablets ramipril shortness of breath wellbutrin facts side effects bush testosterone lyrics bupropion norco withdrawal cialis generic identify cialis patient assistance program rapid city sturgis marijuana growing old fashioned morphine tab do cysts from clomid affect pregnancy xanax xr .5 mg ambien yeast infections vicodin dosage forms disadvantages of smoking marijuana norco pain pills ectopic heartbeats atenolol paxil problem keflex used to treat bupropion wellbutrin pharmacology healthyplace com naprosyn colitis lortab substitutions buy cheap xanax from trusted pharmacists roche diazepam solubility sumatriptan reviews medical dictionary celebrex phentermine rx online overdose effects of seroquel ultram board discussion metformin in the elderly child in prozac cialis made in canada diazepam effects last long side effects of steroids in women celebrex contraindication poems about heroin nx-01 orthos tagamet and nexium taken together buy prescription vaniqa viagra about elidel cream flomax and steroids prednisone and colitis aggresive behavior dementia zyprexa cipro xr side effects cook diazepam prescription help for seroquel ohio serzone attorney purchase atorvastatin pharmacy cipro tendons cialis online buy cialis without prescription bupropion taken with hydroxycut oral steroid sports testosterone order effexor morphine ciprofloxacin iv compatibility atenolol 50mg t dealing with vicodin withdrawl esgic plus generic tylenol dmso funny marijuana jokes marijuana definition possession adipex products and adipex programs going rate for marijuana making lsd from morning glory seeds keywords tramadol discount drugs lotrel 5 10 morphine addiction articles coreg failure heart medicine generic viagra kamagra overnight shipping simpsons episodes marijuana oxycodone radiation mood prednisone swing canine steroids and frequent urination food supplement for testosterone for women actos vs avandia wellbutrin nsaids ambien substitute zoloft and migraine can prevacid cause heart palpitations make your own mescaline xanax abuse stories is zyprexa addicting marijuana laouts elements in marijuana fluorescent light lasix buy phentermine no prescriptions causing stroke tamoxifen buy anabolic steroids venta de rohypnol en mexico paxil long-term effect on serotonin nizoral crema common forms of anabolic steroids buy no prescription hydrocodone cheap online carisoprodol danger seroquel clomid femura adverse effects of ketamine and methylphenidate flomax prostate treatment description of methamphetamines cheaper tramadol coumadin education material senior citizens vioxx archives rapid rooter hydroponic marijuana pcp affects brain illustration marijuana short term memory ritalin and crack ortho spine therapy appleton wi paxil attorney 6 danger propecia pantoprazole sod mesodyne steroids remeron zantac pearls arms and hashish what is the cost of pcp apotex and ranitidine paroxetine withdrawal symptoms ionamin order online pet medications tylenol risks of albuterol tadalafil vs viagra 30 90 amoxicillin capsule capsuls diazepam 5mg tablets dosing adipex online pay by check pilot physical adderall acetaminophen poisoning treatment mirtazapine alprazolam hydrocodone no overnight prescription halo soma marijuana seedling rapid rooter 2 evista diazepam drug interaction marijuana games to play online penicillin and alergic reactions ibuprofen contraindications elavil withdrawal symptoms find search edinburgh viagra phentermine xanax and acne popular names for ghb ovarian cyst and premarin where is hashish grown ghb buy hungary dosage information for lexapro price of zyprexa heroin measurements sold in phentermine show up in drug test floyd landis testosterone plavix animation dur dental bupropion hydrochlorine buy cheap phentermine cod pcp lsd amphetamine methamphetamine planetradio lsd mp3 chlamydia penicillin methamphetamines risky behaviors marijuana laws in british columbia 100 mg sertraline cheap prices marijuana grow room air scrubber dr goldman california ortho conceal marijuana coffee grinds furosemide multi dose vial ionamin phentermine resin complex diflucan 100 mg what steroids are in travatan keyword celebrex versus vioxx boards drug testing wellbutrin yasmin amenorrhea no prescriptions bontril prednisone high iron blood work oxymorphone compared to oxycodone mdma bombs adipex without a prescription needed diet pills didrex online singulair claritan 76 gas station in norco ca is zoloft a mao drug zyrtec pravachol actos allopurinol buy clonazepam overnight cotton oxy oxycodone pill learning to heel aline allegra side affects with fluconazole paxil chantix drugs in sports steroids bipolar effexor ii xr does steroids get into the bloodstream zoloft television commercial neurontin and weight gain order prednisone no prescription overnight fedex synaptic effect of methamphetamine effects seroquel affects of adderall the absolute lowest price for xenical biaxin xl side affects get perscription for didrex on line drug interaction sibutramine and phentermine meridia safety concerns mn twins punto steroids pediatric dose for xanax purchase phentermine without rx paxil prescription drug adipex adipex p tylenol suspension and diabestes healthnet viagra lactation ciprofloxacin aap prednisone mucle deteriation on dog no prescription alprazolam mastercard accepted metformin 500mg tablets online consultation for adderall urinary retention morphine prescribed tramadol for plavix and regional anaesthesia phentermine saturday delivery best online pharmacy topical viagra for women viagra women study tumor retardation medical marijuana crestor effects lipitor live side vs generic atorvastatin calcium hydrocodone order overnight shipping help me phentermine paxil high liver enzymes contraindications paxil lawsuit settlement relafen tamsulosin wiki lsd abuse treatment kenalog and singulair for sinusitis order steroids for uk phentermine online cod online pharmacy online consultation viagra about aricept metformin purpose buspar grapefruit penicillin overnight mastercard no prescription citrate sample sildenafil food interaction ciprofloxacin viagra cialis levitra atorvastatin impotence mexican generic tadalafil adderall zr cheap phentermine california meridia na odchudzanie soma prices naprosyn doses download algorithm for calculating coumadin dose norco medication for pain avandia diabetes effects side ways to use heroin adderall horny as hell norco pills wellbutrin and weight losx generic sildenafil generic what do you use ciprofloxacin for wellbutrin testimonials cushing synthroid minocycline staph infection marijuana infected lung medrol side effects leg cramps effects of opium on the body dangers of wellbutrin and lorazepam does lisinopril make you tired marijuana chemicals treat nih penicillin tablets 250mg buy methylphenidate online hydrocodone apap 7.5500 mg glipizide and cardiovascular desease folic acid ivf viagra the pill ritalin and brain damage weight loss steroids drug 1500 mg depakote per day obama marijuana policy ritalin alcohol mighty morphine power rangers hentai ramipril capsules fluoxetine mg apco allegra no online pharmacy prescription valium acne estradiol patch marijuana mary jane fibromyalgia paxil and pindolol what is the generic lipitor effectiveness lamisil can i travel if taking prednisone nicotine out of moustache cheap tenuate dospan where can you find penicillin no script brand name soma adderall order no prescription affect medicene premarin side tamoxifen gynecomastia paxil no longer works cheap adipex free shipping information on long acting ritalin folic acid mayo clinic baby ecstasy celexa death cipro and rash valium generic indian marijuana republican legalization ramipril grapefruit morphine black market lortab no script medically eligible patients marijuana nicotine as an addiction can lipitor cause hair loss coumadin and cranberry heroin withdrawal symptom diclofenac maximum daily dose valtrex hhv6 treatment allergies 26 asthma singulair willow enterprises tylenol robin williams alcohol marijuana nobel prize for penicillin medical marijuana magazine articles ciprofloxacin compare to avelox history of naprosyn toprol caffeine fosamax bisphosphonate tinnitus back pain bupropion hydrocodone site xenical substitute heart palpatations and hyzaar ranitidine hci conception and singulair online celexa 700 mg soma sertraline and mail order carisoprodol 350mg dosage benicar potassium ambien and expire oxycontin er oxycontin cr wellbutrin cause hair loss dimethyl amphetamine getting off wellbutrin xl nursing phenergan first class array soma tramadol $99 free shipping adderall withdrawal symptoms celebrex celecoxib washington meridia diet pill 15 mg celebrex celecoxib php xenical information order generic drugs online swollen lymph nodes prednisone taking buspar and lexapro phentermine no rx master card marijuana designs transhealth ftm natural testosterone organic cyclobenzaprine drug moonshine marijuana wilkes nc crystal methamphetamine tuberculosis depakote 500 cipro and dilantin interactions klonopin tingling affordable buspar prednisone treatment loratadine 10mg tab new york marijuana legal lower cost nexium methamphetamine recipe nazi jose trinidad carrillo marijuana advair disc yasmin sayani registered nurse glycolic acid retin a pravastatin provastatin folic acid and depression side effects of toprol medication valium withdrawl symptoms class action suit against vioxx does adderall speed up metabolism soma wireless what help lortab withdrawal medical uses of steroids underground marijuana cave wellbutrin and quitting smoking no presciption hydrocodone abuse on xanax tylenol 3 online without prescription naproxen false positive ecstasy abuse help arizona diane von fustenberg marijuana print dresws cialis approval fda effects novo prednisone side price on ecstasy trazodone alopecia prevacid in pediatrics hydrocodone clearance from body pink liquid pcp lanoxin toxicity adderall does metoprolol and wenckebach eddie lesher clear lake marijuana id foreign phentermine pill adipex asia peloquin lsd flomax and mouth problems adderall allergic reaction naltrexone 0.1 mcg per ml solution fluconazole 150 mg pregnancy ecstasy essays lisinopril hctz tablet description transdermal nicotine patch effexor and sexdrive best overnight sources for xanax pregnancy folic acid frequent lamisil urination sildenafil trials in pulmonary hypertension hydrocodone side effects vicodin lsd exposed discontinuing fluoxetine ecstasy names adverse side effects oxycontin paxil and cravings aura soma feldm albuterol brands buy axio labs testosterone klonopin nyquil buy vaniqa cheap soma aryan nj dep ortho phots marijuana jobs in amsterdam atenolol and paxil pregnancy promethazine airbrushed marijuana long term effects diflucan tamoxifen sucks marijuana seeds usa celebrex heartburn installing gate valve on pcp xanax pill get prilosec treating add with wellbutrin 194 fexofenadine naltrexone side effects coumadin serum levels estradiol levels post-transfer ivf supplementation parachuting vicodin system marijuana phentermine site that ships to kentucky adderall prescription without tylenol with codeine no script sildenafil synthesis lortab and flexiril during pregnancy paxil cr information tylenol with codine 3 fluconazole medicine polyp clomid trazodone sleep aid cut nicotine patch hydrocodone tannate dosage group miami opium zocor dizziness fertility lutenizing phase clomid lipitor ca crohns disease marijuana claritin versus clarinex wellbutrin for daytime sleepiness oxycodone hcl acetaminophen information drug celebrex generic name for aciphex phentermine no prescription 32 metoprolol iv administration nursing what are glucose based steroids omeprazole and prilosec difference xenical helped me lose weigh bodybuilding steroids heroin pictures pregnant on ortho tri cyclen zenegra over night sildenafil citrate is hydrocodone as good as vicodin soma water bed tubes cyclobenzaprine side effects priapism xanax bars online neuropathy and ambien penicillin drug interaction valium online marijuana smokers lungs where to buy viagra in london diet and coumadin does zoloft change your personality haslett steelers steroids making a pantoprazole suspension oxycodone breakthrough dose marijuana joint types marijuana caresheet softtabs alternatives omeprazole sa 20mg ambien and spasm medication lsd ig review indd seroquel during pregnancy opium yeilds marijuana as part of pop culture buy bupropion get carisoprodol online natural alternatives for alprazolam clomid follistim twin ecstasy pills search pictures generic pravachol prescription drug ambien cash on delivery employers who support marijuana bumetanide furosemide and torsemide pictures of vicodin pills nicotine stain clear mat nutrition testosterone generic lotrisone buy ritalin online without a prescription cuts used in black tar heroin 180 count generic bontril food counteract nicotine diazepam stability inactive ingredients advair growing organic marijuana humana health plan phentermine effects of marijuana in men poker viagra free zyban canada formigraines singulair adipex p janssen ortho mcneil hydrocodone xodol vicodin germany treatment for molluscum contagiosum zovirax nicotine detection in urine s13 lsd naltrexone and hair loss safe clonazepam inject what do doctors prescribe steroids for marijuana vs prescription drugs where can i get propecia clonidine for pets buy viagra in the uk lortab 7 5 elixir natural substitute for synthroid dosage for temazepam rigid muscles and wellbutrin wellbutrin heart damage loratadine kidney disease isosorbide mononitrate sr kenalog dose for cyst injection soma dosing percocet vs ultracet prednisone to treat ulnar nerve inflamation is klonipin as good as xanax timothy leary lsd tylenol cyanide case buy cheap prozac information novum ortho taking magneisum and wellbutrin n prilosec hct monopril treatment for ghb addiction ethinyl estradiol levo buy vicodin direct no prescription marijuana and caffiene addiction rates drug interactions prozac bebe detre dur dur un natural activities that increase testosterone cheapest altace addictiveness of psilocybin nexium speech problem get off effexor xr saftely bbs bbsphp lolto tadalafil prescription drugs which contain amphetamines side effects of oral steroids marijuana and omeprazole taken together soma salon and spa philadelphia red sox steroids cialis nsfw reviews cialis what is ketamine found in kansas lawyer vioxx metoprolol high blood pressure cheap cialis from shanghai buying hydrocodone with out a prescription effect of ritalin adderall heart rate klonopin and headaches lsd drug history avandia online description chemistry ingredients blackbox bone marrow suppression and prednisone clonidine drug class didrex without a prescription marijuana seeds won t germinate prednisone adverse reactions marijuana counseling testing temple university hair testing for elavil carotid artery blockage zocor lipitor and liver function cannibus hashish detection testing sumatriptan therapeutic use pregnancy and yasmin and wellbutrin prednisone and carotid buy percocet oxycodone online viagra pill on line de disque dur rcupration celecoxib naproxen fast hydrocodone soma prescribing information prednisone shots feet 1 testosterone cycle can paxil make you feel groggy photo of ambien cefzil to treatment for a boil buy adipex now diet pills tenuate does fast singulair work more information about altace post concussion syndrome and prednisone does marijuana trigger migraine sertraline systemic prasco fexofenadine price rash with viagra cialis placebo picture of soma mexican bottle online viagra sale 120 somas overnight zocor warnings dosage of flexeril soma wholesale hypothesis steroids miralax review penicillin effects on pregnancy length of metformin treatment for pcos is marijuana legal in new york norco tech comparison effexor and cymbalta where can you find lsd diseases treated with penicillin lsd cartoons common side effects of prozac 20 mg of ambien dreampharmaceuticals online levitra purchase meclizine without prescrition smoking marijuana norwegian cruise 2.5mg hydrocodone syrup penicillin and diarrhea discount phentermine without dr approval marijuana for osteoarthritis pineapple marijuana seeds flexeril deaths does lsd help migraine headaches celexa side affect ortho evra patch online landlord grants rifle meridia crimes penicillin made from mold foreign oxycontin phentermine yellow pharmacy phentermine yellow buspirone doctor quot worthless group norco taschen marijuana ulft my doctor prescribed .3 premarin is lortab discontinued celexa causing hair loss birth cephalexin control buy cheap online viagra viagra cocaine and xanax mix metered dose inhaler albuterol child manufacturing of methamphetamines herbal viagra doma hyzaar and avalide illicit ritalin users guides effects of heavy marijuana use fertility purdue oxycontin settlement mixing antabuse with xanax synthroid breast cancer internetresults tramadol sertraline suicide will ibuprofen cause miscarriage zyban dosage charlies soma synthesis of nexium tamiflu prescription transdermal estradiol therapy for prostate cancer phentermine ingredients oregon marijuana party flexeril sleep aspirin and tylenol and interaction side affects of smoking marijuana folic acid health information diet ephedrine loss phentermine weight effects of a prozac overdose clinical research on pantoprazole and lansoprazole rise testosterone taking old penicillin attention deficit disorder nicotine byetta steroids zyrtech with claritin nicotine transdermal system during pregnancy nicotine filter fluoxetine paroxetine sertraline citalopram fluvoxamine dr phentermine cialis bathtub ads marijuana seed germination magnets u s underground labs for steroids phentermine $84 nicotine withdrawal headache marijuana enhancer ambien and soma online attorney dallas vioxx add adhd ritalin pain medications and plavix baby tylenol overdose potassium prilosec which cells does marijuana deteriorate low valium toddler too much ibuprofen ranitidine in dogs buy now online viagra morphine cautions atrovent nebulizer treatment herman vioxx final verdict personal experiences on wellbutrin xl slang names for ketamine cat ate adderall advair and throat mucous what is nicotine inhaler mighty morphine power rangers clean-up club schizophrenia treatment psilocybin veritas parma adipex viagra and street drugs penicillin and gram positive bacterium medi ambien sale lsd toprol purchase compare zocor generic prescription wieght loss adipex ketoconazole sertraline interaction from information nortriptyline eric zuehlke soma cherry tree ortho miacalcin esphogeal motility sildenafil citrate sale buy keyword ambien duration for xanax in system chemical structure of loratadine buspar chat rooms herbal online viagra acetaminophen overuse difference between testosterone cypionate and enanthate lisinopril side-effects zanaflex for fibromyalgia lamisil tabs and alcohol vetrinarian tramadol dosing info for temazepam flexeril narcotic side effects of medication evista minocycline antibiotic side effects dosing renova lortab online buy adhd dilantin lortab prescription ibuprofen overdose amount plavix free samples ecstasy tape health effects using steroids sage and sour marijuana growing back heroin addicts hair prescription weight loss pills phentermine xanax vasectomy imitrex vs generic brand preferred soma and lorcet mix special brownies recipe marijuana prednisone palpitations seizure headache and wellbutrin bite dur synthroid hedweb sale ramipril effexor product information cheap bontril ptsd remeron signs of using amphetamine prednisone impotence soma dental birth effects from marijuana mdma green star lortab 2.5 500 tablet which is better pail zoloft zyprexa attorneys los angeles best generic price viagra hyzaar rebate e415 bupropion doctor lexapro symptom withdrawal prilosec otc next day xanax deliver trazodone and back pain what's stronger vicodin or codeine vicodin liver damage marijuanas effects 200mg morphine claritin d 30 tablets meridia diet pill 32 xenical with free shipping effexor wellbutrin 5htp and lsd detrol la conversion clomid conceive trying child given marijuana by cousin tricor system inc mechanism zyprexa ultram dream pharmaceutical marijuana vapor point zyban welcome 20 lsd timothy leary free drug side effect altace nicotrol holder effexor depression anxiety research women ambien cr sleep walking breast diflucan feeding while marijuana cabinets childrens dosage ibuprofen adipex cheapest adipex cheapest price diclofenac fibromyalgia ibs and lexapro male enhansement viagra claritin and urin acetone amphetamine cheap online imitrex vicoprofen overseas pharmacies amaryl weight gain what is motrin sertraline serotonin syndrome drug interaction heroin sex life aciphex pepto adult dosage for ibuprofen coming down from marijuana high crystal methamphetamine t shirts fosamax cummings bupropion affects on weight loss biaxin reaction fosamax side affect constipation verapamil mineral oil g methamphetamine norco pain medication withdrawal symptoms canadian pharmacy vicodin advair first public sold when fexofenadine with spectoscopy zoloft patient review cheap vicodin from canada without prescription web buy meridia herbal ecstasy new zealand clonidine uses of in children oklahoma and methamphetamine use lisinopril cough and sore throat ultram online prescriptions safe alternatives to paxil tramadol with tylonel can vioxx get you high adderall zantac bacillus and insect and penicillin where can i purchase steroids legally deaths associated with oxycontin ketamine persecution what is 20 mg celexa snorting ritalin side effects phentermine delivered sat by fed x biaxin bulldog a331 vicodin goodyear allegra ratings pooled testosterone soma argentina buy cigarette free in nicotine ontario marijuana indoor growing guide pcp nicknames pepcid otc discount soma carisoprodol manufactured by mutual physican prescribing lipitor cough side effect cipro bibliography for psilocybin mushrooms alaska vioxx lawyer zyprexa settlement payouts vicodin overdose effects hematoma and coumadin or warfarin british marijuana movie heroin detox drug lithium and lipitor and problems zithromax taken with allegra or antihistimine cyclobenzaprine tab 10mg pcos and wellbutrin precaution indian xanax craniosynostosis clomid side effects carisoprodol dog ate viagra ambien 5 mg marijuana growth and cultivation pcp lung ventilator loratadine alegria atomoxetine bupropion ambien caremark formulation of paroxetine fioricet 2bwithout 2bprescription 2bsi adrian beltre steroids gynecomastia steroids aciphex sever reactions about the drug ziac weightloss clinic for adipex prempro cracking fingernails effects of habitual marijuana use tramadol dose of 300 mg pills vicodin hp naked girls with marijuana elavil and small children dienogest estradiol valerate lorazepam alcohol big marijuana plants babies symptoms exposed to methamphetamines recipe for making ecstasy penicillin oranges vicodin interactions prescription drugs omeprazole estradiol break through bleeding tamiflu effective h5n1 ecstasy pacifiers for sale xenical en colombia marijuana arrhythmia fibromyalgia elavil articles on teen methamphetamine use finding wild psilocybin mushrooms in california oxycontin maker fines cefixime online adderall increases physical energy buy trazodone online medicine and bupropion order hydrocodone from foreign pharmacies analisis de marijuana en el pelo mdma routes of administration marijuana weed pot smokers pics are motrin and ibuprofen the same high effects of marijuana what is soma product is there generic altace coreg pharmaceutical company marijuana hurting voice tricor fenofibrate tablets cost penicillin type antibiotic cialis effects didrex medication idodine synthroid peripheral neuropathy treatment after levaquin forum zocor lawsuit merck night time punching with remeron face burn from retin a sibutramine long term ibuprofen liver function generic equivalent to nexium marijuana sms messages prednisone selegaline free seroquel ibuprofen and blood sugar buy diazepam online no prescription avandia manufactuer hallucinations on klonopin valium drug information ibuprofen aspirin acetaminophen crystal methamphetamine smoking medical marijuana in mo cardura 2 mg ortho cyclen side effects former stars and steroids marijuana hash recipe does liquid morphine go bad reference range for estrogen and testosterone yasmin koval oxycodone 5325 mg dissolution in pravastatin vitro vaginal discharge with levaquin oxycodone 40 mg er tab teva depression severe adipex diet pill ecstasy safe party yasmin reyes pantoprazole sodium side effects growing marijuana in a field ibuprofen fatal fun facts about marijuana getting high off tylenol cold medicine viagra for her brown tips on marijuana plant leaves atenolol vs diovan human norco virus phentermine at wal mart morphine let's take a trip buy adipex cheap naproxen still rules vd of lorazepam nicomide zocor paxil green tea interaction cialis muscle pain beets and coumadin poppy opium harvest adderall red ears ultram mechanism methamphetamine mouth buy phentermine no prescription 32 reasons why marijuana should be legalized opium for the mases nicotine byproducts on blood tests tylenol cold pills ingredients generic detrol addictive ritalin effectiveness of ortho evra 10mg norco prednisone effect thyroid test 2007 vioxx verdicts aikman imitrex sylvester stalone steroids drug identification generic flexeril xanax 2.5 discontinue use zoloft lisinopril side affects contra costa county marijuana prohibition wellbutrin structure forums order phentermine treatment of allergic reaction to augmentin albuterol sterile 0.5 20ml bt 80mg oxycontin without prescription cheap online pharmacies hydrocodone prescription drug oxycodone aceto when do i stop taking lexapro ketamine antidepresant reactions to marijuana liver damage from overuse of tylenol side effects of advair quake team fortress prozac hypothyroid depakote glucophage 2btablet furosemide 24x7 atorvastatin cost tramadol overdose canine viagra hamster audio pronunciation levaquin generic soft viagra sildenafil spain microwaving marijuana generic of norvasc imitrex nasal spary liquid valium for dogs with seziures albuterol inhaler overdose quit buspar cold turkey no problem red bull and adderall tylenol 1982 chicago jc romero steroids hydrocodone pain medicine mike rowe tylenol commercials augmentin tab 875mg marijuana stimulant depressant what type of medication is glucophage buy steroids very low prices bijwerkingen and nexium risperdal alternative use vardenafil drug xanax addictions opiates low cost xenical health insurance lead nexium and cancer prilosec baikal guide shop keyword compazine dosage zyban smoking ketamine xylazine rat coronary wellbutrin tremor dizziness jolt during sleep what is loratadine for cialis overnigth ciprofloxacin prostate ortho tricyclen and hair loss oxycodone 5 mgs free weight loss xenical morphine band members ingredients of tylenol cold can acetaminophen hurt me buy fluconazole on sale sublingual vitamin b12 folic