APWidget = {
	urlXML: '',
	fixedQuery: false,
	query: '',
	defaultQuery: 'auto',
	urlPrefix: '/dist/',
	results: [],
	getHTML: function(){
		var html = [];
		html.push('<div id="apwidget" style="display: none;">');
			html.push('<div class="navs">');
			html.push('<a href="#" class="prev"></a>');
			html.push('<a href="#" class="next"></a>');
			html.push('</div>');
			html.push('<div class="clip">');
			html.push('<ul id="apscroller">');
			html.push('</ul>');
			html.push('</div>');
		html.push('</div>');
		return html.join('');
	},
	getResultHTML: function(){
		var html = [];
		$(APWidget.result).each(function(){
			html.push('<li>');
			html.push('<div class="picItem"><a href="'+this.url+'"><img src="'+this.imagen1+'" alt="foto" width="100" height="75" /></a></div>');
			html.push('<div class="infoCar">');
			html.push('<a href="'+this.url+'">'+this.marca+' '+this.modelo+' ' + this.year+'</a>');
			html.push('<p><strong>$'+this.precio+'</strong><br />'+this.estado+'<br />Color: <strong>'+this.colorexterior+'</strong><br />Km: <strong>'+this.kilometraje+'</strong></p>');
			html.push('</div>');
			html.push('</li>');
		});
		$('#apscroller').html(html.join(''));
		$('#apwidget').show();
	},
	callWS: function(){
		if (!APWidget.fixedQuery){
			APWidget.query = APWidget.createQuery();
		}
		var url= 'http://query.yahooapis.com/v1/public/yql?q=use "'+APWidget.urlXML+'" as ws; select * from ws where query="'+APWidget.escapeQuery(APWidget.query)+'" and hits="5";&format=json&callback=?';
		$.getJSON( url, APWidget.processResult);
	},
	processResult: function(data){
		var xml = APWidget.toXML(data.query.results.Envelope.Body.SearchResponse.SearchResult);
		$(xml).find("HIT").each(function() {
			APWidget.result.push(APWidget.getObjectFromHit($(this)));
		});
		APWidget.getResultHTML();
		APWidget.setScroller();
	},
	getObjectFromHit: function(hit){
		var obj = {};
		hit.find("FIELD").each(function() {
			if ($(this).attr("NAME") == "imagen1"){
				obj.imagen1 = $(this).text();	
			}
			if ($(this).attr("NAME") == "marca"){
				obj.marca = $(this).text();	
			}
			if ($(this).attr("NAME") == "modelo"){
				obj.modelo = $(this).text();	
			}
			if ($(this).attr("NAME") == "year"){
				obj.year = $(this).text();	
			}
			if ($(this).attr("NAME") == "colorexterior"){
				obj.colorexterior = $(this).text();	
			}
			if ($(this).attr("NAME") == "kilometraje"){
				obj.kilometraje =  $(this).text();
				if (obj.kilometraje != ''){
					obj.kilometraje = APWidget.addCommas(parseInt($(this).text()).toFixed(0));
				}
			}
			if ($(this).attr("NAME") == "anuncioid"){
				obj.anuncioid = $(this).text();	
			}
			if ($(this).attr("NAME") == "estado"){
				obj.estado = $(this).text();	
			}
			if ($(this).attr("NAME") == "precio"){
				obj.precio = APWidget.addCommas(parseInt($(this).text()).toFixed(0));	
			}
		});
		obj.url = APWidget.urlPrefix+APWidget.fixForUrl(obj.marca)+"-"+APWidget.fixForUrl(obj.modelo)+"-"+APWidget.fixForUrl(obj.year)+"~id"+APWidget.fixForUrl(obj.anuncioid)+".aspx";
		return obj;
	},
	fixForUrl: function(string){
		return string.replace(" ","-");
	},
	draw: function(){
		APWidget.result = [];
		APWidget.callWS();
		document.write(APWidget.getHTML());
	},
	toXML: function(string){
		var doc;
		if (navigator.appName == 'Microsoft Internet Explorer'){
			doc = new ActiveXObject('Microsoft.XMLDOM');
			doc.async = 'false'
			doc.loadXML(string);
		} else {
			doc = (new DOMParser()).parseFromString(string, 'text/xml');
		}
		return doc;
	},
	createQuery: function(){
		var q = [];
		if (!APWidget.isEmpty($('#marca'))){
			q.push('marca:("'+$('#marca').val()+'")'); 
		}
		if (!APWidget.isEmpty($('#modelo'))){
			q.push('modelo:("'+$('#modelo').val()+'")'); 
		}
		if (!APWidget.isEmpty($('#year'))){
			q.push('year:("'+$('#year').val()+'")'); 
		}
		if (!APWidget.isEmpty($('#version'))){
			q.push('version:("'+$('#version').val()+'")'); 
		}
		/*
		if (q.length == 0)
			q.push(APWidget.defaultQuery);
		*/
		return q.join(" and ");
	},
	escapeQuery: function(string){
		return string.replace(/"/g,'\\"');
	},
	isEmpty: function(input){
		if (input.val() === undefined || input.val() == '')
			return true;
		return false;
	},
	addCommas: function(nStr){
		nStr += '';
		x = nStr.split('.');
		x1 = x[0];
		x2 = x.length > 1 ? '.' + x[1] : '';
		var rgx = /(\d+)(\d{3})/;
		while (rgx.test(x1)) {
			x1 = x1.replace(rgx, '$1' + ',' + '$2');
		}
		return x1 + x2;
	},
	setScroller: function(){
		$('#apwidget .clip').serialScroll({
			items:'li',
			prev:'#apwidget .navs .prev',
			next:'#apwidget .navs .next',
			offset:0, 
			start:0, 
			duration:1200,
			force:true,
			stop:true,
			lock:false,
			cycle:false, 
			easing:'easeOutQuart', 
			jump: false
		});
	}
}


jQuery.easing.easeOutQuart = function (x, t, b, c, d) {
	return -c * ((t=t/d-1)*t*t*t - 1) + b;
};

;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);
;(function(a){var b=a.serialScroll=function(c){return a(window).serialScroll(c)};b.defaults={duration:1e3,axis:"x",event:"click",start:0,step:1,lock:!0,cycle:!0,constant:!0};a.fn.serialScroll=function(c){return this.each(function(){var t=a.extend({},b.defaults,c),s=t.event,i=t.step,r=t.lazy,e=t.target?this:document,u=a(t.target||this,e),p=u[0],m=t.items,h=t.start,g=t.interval,k=t.navigation,l;if(!r){m=d()}if(t.force){f({},h)}a(t.prev||[],e).bind(s,-i,q);a(t.next||[],e).bind(s,i,q);if(!p.ssbound){u.bind("prev.serialScroll",-i,q).bind("next.serialScroll",i,q).bind("goto.serialScroll",f)}if(g){u.bind("start.serialScroll",function(v){if(!g){o();g=!0;n()}}).bind("stop.serialScroll",function(){o();g=!1})}u.bind("notify.serialScroll",function(x,w){var v=j(w);if(v>-1){h=v}});p.ssbound=!0;if(t.jump){(r?u:d()).bind(s,function(v){f(v,j(v.target))})}if(k){k=a(k,e).bind(s,function(v){v.data=Math.round(d().length/k.length)*k.index(this);f(v,this)})}function q(v){v.data+=h;f(v,this)}function f(B,z){if(!isNaN(z)){B.data=z;z=p}var C=B.data,v,D=B.type,A=t.exclude?d().slice(0,-t.exclude):d(),y=A.length,w=A[C],x=t.duration;if(D){B.preventDefault()}if(g){o();l=setTimeout(n,t.interval)}if(!w){v=C<0?0:y-1;if(h!=v){C=v}else{if(!t.cycle){return}else{C=y-v-1}}w=A[C]}if(!w||t.lock&&u.is(":animated")||D&&t.onBefore&&t.onBefore(B,w,u,d(),C)===!1){return}if(t.stop){u.queue("fx",[]).stop()}if(t.constant){x=Math.abs(x/i*(h-C))}u.scrollTo(w,x,t).trigger("notify.serialScroll",[C])}function n(){u.trigger("next.serialScroll")}function o(){clearTimeout(l)}function d(){return a(m,p)}function j(w){if(!isNaN(w)){return w}var x=d(),v;while((v=x.index(w))==-1&&w!=p){w=w.parentNode}return v}})}})(jQuery);