﻿/*
* illumina public api v0.0.1
* copyright illumina inc 2010
* http://jsfiddle.net/66tXz/17
* http://jsfiddle.net/KWaB4/1/
* http://{server}/api/file/1/icomapi.js
*/
(function(o){var l=null,k=false,c=false,n=false,d=false,m=true,p=null,f={keywords:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/api/search/keywords"},search:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/api/search/search"},currentUser:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/api/account/currentuser"},cartDetails:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/api/cart/details"},cartAdd:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/api/cart/add"},fullCart:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/cart/full"},addToCartNotLoggedIn:function(){return(o.icom.settings.isRemote?o.icom.settings.baseIcomUrl:"")+"/cart/addandshow/"},requestQuote:function(){return o.icom.settings.baseIlluminaUrl+"/forms/quote_request.ilmn"}},e={cart:"icom.cart.queue",user:"icom.account.user.queue"};function a(r,q){r=o.extend({data:q},r);if(o.icom.settings.isRemote){r.dataType="jsonp"}switch(r.dataType){case"xml":r.url=r.url+".xml";o.ajax(r);break;case"html":r.url=r.url+".html";o.ajax(r);break;default:r.url=r.url+".json";if(r.dataType=="jsonp"&&o.jsonp&&o.isFunction(o.jsonp)){r.url+="?jsoncallback=?";o.jsonp(r)}else{o.ajax(r)}break}}function i(r,q){if(r){o.each(r,function(t,s){if(o.inArray(t,q)==-1){delete r[t]}})}return r||{}}function g(){l=null;k=false;c=false;p=null}function h(r,q){o("body").trigger(r,q)}function j(q,r){if(r&&o.isFunction(r.error)){r.error(q)}else{throw q}}function b(t,r,s){var q=["async","cache","complete","contentType","dataFilter","dataType","error","global","ifModified","password","processData","scriptCharset","timeout","username","xhr"],u={};if(q){if(t!=null){o.each(t,function(w,v){if(o.inArray(w,q)!=-1){u[w]=v}})}}u.url=r;u.success=s;return u}o.icom={account:{},search:{},events:{},widget:{},cms:{},cart:{},setup:function(q){o.extend(o.icom.settings,q);if(o.icom.settings.isRemote==false){o.icom.settings.baseIcomUrl=""}},constants:{},settings:{},log:function(q){if(m){var r="\n-----------------------------------------------------------\n";if(typeof jQuery!="undefined"){o("#console").val(q+r+o("#console").val())}if(window.console){console.warn(q)}}}};o.icom.constants.cartSource={Unknown:"Unknown",Search:"Search",QuickOrder:"QuickOrder",OrderHistory:"OrderHistory",CopyCart:"CopyCart",SavedCart:"SavedCart",BrowseByCategory:"BrowseByCategory",SavedList:"SavedList",iSelectReorder:"iSelectReorder",iSelectNewOrder:"iSelectNewOrder",OpaCalculator:"OpaCalculator",OpaFileList:"OpaFileList"};o.icom.constants.itemType={Consumable:"I",Opa:"1",iSelect:"3"};o.icom.settings={baseIcomUrl:"https://icom.illumina.com",baseIlluminaUrl:"https://www.illumina.com",isRemote:false,defaultCartInfo:{quantity:1,source:o.icom.constants.cartSource.Unknown,itemType:"I",overrideQuantity:false}};o.each("cartChanged, message, error".split(","),function(q,r){o.icom.events[r]=function(s){return o("body").bind(r,s)}});o.icom.account.isLoggedIn=function(r,s){o.icom.log("icom.account.isLoggedIn: called");if(c){return c}else{var q={error:function(){g();o.icom.log("icom.account.isLoggedIn: false");s(false)}};o.icom.account.currentUser(q,function(t){o.icom.log("icom.account.isLoggedIn: true");s(true)})}};o.icom.account.currentUser=function(s,t){var q="icom.account.currentUser";o.icom.log(q+": called");o("body").queue(e.cart,function(){if(c&&p!=null){d=false;t(p);o("body").dequeue(e.cart)}else{d=true;var u=function(y,w,x){o.icom.log(q+": ajax complete");if(y&&y.userName){c=true;d=false;p=y;t(y,w,x)}else{j("failed to load user",s)}o("body").dequeue(e.cart)};var v=b(s,f.currentUser(),u);v.type="POST";v.cache=false;a(v)}});var r=o("body").queue(e.cart).length;o.icom.log(q+": queue length "+r);if(!d&&r==1){o("body").dequeue(e.cart)}};o.icom.cart.details=function(s,t){var q="icom.cart.details";o.icom.log(q);o("body").queue(e.user,function(){o.icom.log(q+": queue execution");if(k){n=false;t(l);o("body").dequeue(e.user)}else{n=true;var u=function(y,w,x){l=y;n=false;k=true;o.icom.log(q+": ajax complete");t(y,w,x);o("body").dequeue(e.user)};var v=b(s,f.cartDetails(),u);v.type="POST";v.cache=false;a(v)}});var r=o("body").queue(e.user).length;o.icom.log(q+": queue length "+r);if(!n&&r==1){o("body").dequeue(e.user)}};o.icom.cart.howManyInCart=function(q,t,u){o.icom.log("icom.cart.howManyInCart: called");var s=function(v){var w=0;for(var x=0;x<v.details.length;x++){var y=v.details[x];if(q==y.catalogId&&!y.isPromotion){w+=v.details[x].quantity}}return w};var r=function(x,v,w){u(s(x))};o.icom.cart.details(null,r)};o.icom.cart.add=function(v,s,t){var w="icom.cart.add";v=o.extend(o.icom.settings.defaultCartInfo,v);var q=s!=null?s.error:null;var u={error:function(x){n=false;if(o.isFunction(q)){q(x)}h("error",x);o("body").dequeue(e.cart)}};o.extend(u,s);o.icom.log(w);o("body").queue(e.cart,function(){o.icom.log(w+": queue execution");n=true;var x=function(B,z,A){l=B;n=false;k=true;o.icom.log(w+": ajax complete");if(t!=null&&o.isFunction(t)){t(B,z,A)}h("cartChanged",B);o("body").dequeue(e.cart)};var y=b(u,f.cartAdd(),x);y.type="POST";y.cache=false;y.data=v;a(y)});var r=o("body").queue(e.cart).length;o.icom.log(w+": queue length "+r);if(!n&&r==1){o("body").dequeue(e.cart)}}})(jQuery);
(function(a){a.fn.icomCart=function(c){var d={maxViewable:4};var e=a.extend(d,c||{});var b=this;return this.each(function(){var f=a(this);var n=null;var p=false;var m=false;var j={error:function(r){o("There was a problem loading your cart.","ui-state-error");a.icom.log(r)}};a.icom.events.cartChanged(function(r){l();q();o("Your cart has been updated","ui-state-highlight")});var q=function(){a.icom.cart.details(j,function(r){n=r;h()})};a.icom.account.isLoggedIn(j,function(r){p=r;if(r){q()}else{h()}});function h(){var x=a.icom.settings.baseIcomUrl;i();var s=a("#cart-plugin-id");var v=f;var u=a("#cart-shim");var z=a("#cart_bottom");var y=a("#cart_button");var t=a("#cart_top");y.click(function(A){A.stopPropagation();k()});u.click(function(A){g()});if(jQuery().hoverIntent){a.icom.log("cart plugin: using hover intent");var w={timeout:0,over:k,out:function(){}};y.hoverIntent(w);var r={timeout:500,over:function(){},out:g};v.hoverIntent(r)}else{v.mouseleave(function(A){g()})}}function k(){if(m==false){var s=a("#cart-plugin-id");var v=f;var u=a("#cart-shim");var y=a("#cart_bottom");var x=a("#cart_button");var t=a("#cart_top");var r=f.parent().offset().left;var w=f.parent().offset().top;t.addClass("cart_tab_on").removeClass("cart_tab_off");y.addClass("cart_bottom_on").removeClass("cart_bottom_off");s.slideDown("slow");u.show();y.show()}m=true}function g(){if(m==true){var r=a("#cart-plugin-id");var u=f;var t=a("#cart-shim");var w=a("#cart_bottom");var v=a("#cart_button");var s=a("#cart_top");t.hide();w.hide();r.slideUp("slow",function(){s.addClass("cart_tab_off").removeClass("cart_tab_on");w.addClass("cart_bottom_off").removeClass("cart_bottom_on")})}m=false}function i(){var w=a.icom.settings.baseIcomUrl;var z=[];var r=w+"/cart/full?continueUrl="+window.location.href;if(!p||n==null){z.push('<span>&nbsp;&nbsp;&nbsp;&nbsp;<a id="cart_button" href="'+r+'">View Cart <img src="'+w+'/content/images/cart.gif" style="vertical-align:middle" border="0" /></a></span>')}else{z.push('<div id="cart-shim"></div>');z.push('<div class="cart-plugin-container">');z.push('<div id="cart_top" class="cart_tab_off">');z.push('<span>&nbsp;&nbsp;&nbsp;&nbsp;<a id="cart_button" href="https://icom.illumina.com/cart/full">View Cart ('+n.details.length+') <img src="'+w+'/content/images/cart.gif" style="vertical-align:middle" border="0" /></a></span>');z.push('<div id="'+this.id+'_message" style="display: none" class="ui-corner-all cartMessage">Cart Message</div>');z.push("</div>");z.push('<div id="cart-plugin-id" class="cart_body_on" style="display: none;">');var s=n.details.length>d.maxViewable;if(n.details.length>0){z.push('<table class="cart-table">');var u="";var x=s?Math.min(n.details.length,d.maxViewable):n.details.length;for(var y=0;y<x;y++){var t=n.details.length-(1+y);var v=n.details[t];z.push('<tr class="cart_row '+u+'">');z.push('<td class="left_col">'+v.productName+"</td>");z.push('<td class="right_col"><span class="price">'+v.unitPriceDisplay+'</span><span class="quantity"> x'+v.quantity+"</span></td></tr>");u=(u=="alt")?"":"alt"}z.push("</table>");if(s){z.push('<div class="left cart-pad"><a href="'+r+'">More...</div>')}z.push('<div class="cart-line"></div><div class="cart-pad">');z.push('<div class="left"><a href="'+w+'/order/checkout"><img src="'+w+'/content/images/checkout.png" alt="Checkout" /></a>');z.push('<span style="float: right; padding-right: 10px;"><a  href="'+r+'">View/edit</a>&nbsp;</div></div>')}else{z.push("<span class='CartNoItems'>You have no items in your cart</span>")}z.push("</div>");z.push('<div id="cart_bottom" class="cart_bottom_off">');z.push("</div>");z.push("</div>")}f.html(z.join(""))}function l(){var r=a.icom.settings.baseIcomUrl;var s=[];s.push('<div><img src="'+r+'/content/images/SmallSpinner.gif" alt="working..." /></div>');f.html(s.join(""))}function o(r,t){var s="#"+this.id+"_message";a(s).removeClass("ui-state-highlight");a(s).removeClass("ui-state-error");a(s).addClass(t);a(s).html(r);a(s).show();setTimeout(function(){a(s).fadeOut("slow")},2000)}});return this}})(jQuery);

