/*
**
*/

var ToolTip = {
	init:0,
	toggleTip:function(id){
		switch (id){
			case 1:
				if (ToolTip.init==0){
					Juliet.JTween.Tween(
						"tooltip"+id,
						{tweenProperty:"top",tweenDuration:1.5,tweenEase:"easeInOutQuint",tweenStart:400,tweenEnd:40}
					)
					ToolTip.init=1
				}
			break;
			case 2:
				if (ToolTip.init==1){
					Juliet.JTween.Tween(
						"tooltip1",
						{tweenProperty:"top",tweenDuration:1.5,tweenEase:"easeInOutQuint",tweenStart:40,tweenEnd:-60}
					)
					Juliet.JTween.Tween(
						"tooltip"+id,
						{tweenProperty:"top",tweenDuration:1.5,tweenEase:"easeInOutQuint",tweenStart:400,tweenEnd:40}
					)
					Juliet.JTween.Tween(
						"tooltip2b",
						{tweenProperty:"top",tweenDuration:1.5,tweenEase:"easeInOutQuint",tweenStart:400,tweenEnd:200,tweenDelay:1}
					)
				}
				ToolTip.init=2
				
			break;
		}
		
	}
}

var Map = {
	toggleState:function(st){
		Content.toggleLocationWrapper(document.getElementById("state_select"),st)
	}
}
var Form = {
	_activeQuery	:"",
	_activePage		:1,
	_noResultCount	:0,
	xmlHttp			:Juliet.AJAX.createXMLHTTPObject(),
	SubmitForm:function(f){
		switch (f){
			case "signup":
				this.doSignup()
			break;
			case "login":
				this.doLogin()
			break;
		}	
	},
	searchFocus:function(){
		Content.setStyle("frm_category_wrapper","display","block")
		Content.setStyle("frm_min_max_wrapper","display","block")
		Content.setStyle("frm_image_wrapper","display","block")
		Content.setStyle("frm_date_wrapper","display","block")
	},
	onFieldToggle:function(fld,id,t){
		if (fld.value == id && t==1) fld.value=""
		if (fld.value == "" && t==0) fld.value=id
	},
	checkEnter:function(e){
		var key=e.keyCode || e.which;
		if (key==13) Form.doLogin();
	},
	queryCity:function(id){
		Form._activeQuery=id
		Form._activePage = 1
		Form.doQuery(id)
	},
	checkSearch:function(){
		return true
	},
	doQuery:function(id,s){ 
		var url		= "_gateway/gateway.php"
		var query	= document.getElementById("frm_search").value
		var cat 	= document.getElementById("frm_category")[document.getElementById("frm_category").selectedIndex].value
		var m 		= document.getElementById("frm_min").value
		var mx 		= document.getElementById("frm_max").value
		
		if (m == "min" ) m = ""
		if (mx == "max" ) mx = ""
		if (s==undefined) s = ""
		
		var params = {
			action:"xml_req",
			query:query,
			category:cat,
			location:id,
			min:m,
			max:mx,
			s:s	
		}
		if (query!="" && query!="search term"){
			if (s==""){
				Content.setStyle("preloader","display","block")
				document.getElementById("results-header").innerHTML="<h1>now searching: " + id + "</h1>"
				document.getElementById("results").innerHTML=""
				
				Content.createSearchCookie(query+"___"+cat+"___"+m+"___"+mx)
			}
			Form.xmlHttp = Juliet.AJAX.createXMLHTTPObject()
			if (s!=""){
				Juliet.AJAX.query(url,params,Form.xmlHttp,Form.stateChanged_processCityAppendQuery)
			}else{
				Juliet.AJAX.query(url,params,Form.xmlHttp,Form.stateChanged_processCityQuery)
			}
		}else{
			alert("Please enter a search term!")
		}
	},
	validateDate:function(sdate,r_date){
		return true
		if (sdate==""){
			return true
		}else{
			var itemDate_string = r_date.split("T")[0]
			var itemDate = new Date()
			itemDate.setFullYear(itemDate_string.split("-")[0],parseInt(itemDate_string.split("-")[1])-1,itemDate_string.split("-")[2])
			var today = new Date()
			var checkDate = new Date()
			checkDate.setDate(today.getDate()-parseInt(sdate))

			if (checkDate<=itemDate) {
				return true
			}else{
				return false
			}
		}
	},
	parseID:function(link){
		var rpath = link.substring(link.lastIndexOf("/")+1,link.lastIndexOf("."))
		return rpath
	},
	bindResults:function(r_xml,typ){
		var r_html = ''
		var rcount = 0
		var results = Juliet.AJAX.getNodes("item",r_xml)
		
		for (var i=0;i<results.length;i++){
			var r_desc 		= Juliet.AJAX.getNodeValue("description",results[i])
			var r_link 		= Juliet.AJAX.getNodeValue("dc:source",results[i])
			var r_date		= Juliet.AJAX.getNodeValue("dc:date",results[i])
			var r_title 	= Juliet.AJAX.getNodeValue("dc:itemtitle",results[i])
			var r_id	 	= Form.parseID(r_link)			
			var sdate_ele = document.getElementById("frm_date")
			var sdate = sdate_ele[sdate_ele.selectedIndex].value
			
			
			if (Form.validateDate(sdate,r_date)){
				
				if (Content.isRemembered(r_id)){
					r_html+=	'<div class="result_active" id="result_' + r_id + '">'
				}else{
					r_html+=	'<div class="result" id="result_' + r_id + '">'
				}
				r_html+=	'<div class="result_date">'
				r_html+=	'				<p>'
				try{
					r_html+=	r_date.split("T")[0]
				}catch (e){
				
				}
				r_html+=	'			</p>'
				r_html+=	'		</div>'
				r_html+=	'<div class="result_content">'
				r_html+=	'<h1><a href="javascript:Content.viewItem(\'' + r_link + '\',\'' +r_id + '\')">' + r_title + '</a></h1>'
				r_html+=	'<p class="result_content_desc">&nbsp;'
				//r_html+=	r_desc
				r_html+=	'</p>'
				r_html+=	'<div id="iframe_wrapper_' + r_id + '" class="iframe_wrapper"></div>';
				r_html+=	'<ul class="result_content_footer">'
				r_html+=	'<li id="btn_view_' + r_id + '"><a href="javascript:Content.viewItem(\'' + r_link + '\',\'' +r_id + '\')">{ view }</a></li>'
				r_html+=	'<li id="btn_close_' + r_id + '" class="btn_close"><a href="javascript:Content.closeItem(\'' +r_id + '\')">{ close }</a></li>'
				r_html+=	'<li><a href="javascript:Content.rememberItem(\'' +r_id+'\',\'' + r_link  +'\')">{ remember }</a></li>'
				r_html+=	'<li><a href="' + r_link  +'" target="_blank">{ open in new window }</a></li>'
				r_html+=	'</ul>'
				r_html+=	'</div>'
				r_html+=	'<div class="result_nav"></div>'
				r_html+=	'<div class="result_footer"></div>'
				r_html+=	'</div>'
				rcount++
			}
			
		}
		
		if (results.length==0 || rcount==0){
			switch (Form._noResultCount){
				case 0:
				r_html='<div class="result"><h1>We\'re sorry - we couldn\'t find anything here.</h1></div>'
				break;
				case 1:
				r_html='<div class="result"><h1>We\'re sorry, we still can\'t find it.</h1></div>'
				break;
				case 2:
				r_html='<div class="result"><h1>We couldn\'t find anything here, either. Are you sure you spelled it right?</h1></div>'
				break
				case 3:
				r_html='<div class="result"><h1>Swing and a miss.</h1></div>'
				break;
				case 4:
				r_html='<div class="result"><h1>Nope. Nada. Zilch.</h1></div>'
				break;
				case 5:
				r_html='<div class="result"><h1>You keep on using that word. I do not think it means what you think it means?</h1></div>'
				break;
				case 6:
				r_html='<div class="result"><h1>We\'ll stop counting, but nothing here either.</h1></div>'
				break;
				default:
				r_html='<div class="result"><h1>We\'re sorry - we couldn\'t find anything here.</h1></div>'
				
				break;
			}
			
			Form._noResultCount++
		}else{
			Form._noResultCount=0
		}
		if (results.length>=25){
			r_html+='<div id="more_wrapper_' + (25*Form._activePage) + '" class="more_wrapper"><a href="javascript:Form.queryNext(' + (25*Form._activePage) + ')" class="system_btn">{ Load Next 25 }</a></div>';
		}
		if (typ=="append"){
			document.getElementById("results").innerHTML+=r_html
		}else{
			document.getElementById("results").innerHTML=r_html
		}
		
	},
	stateChanged_processCityQuery:function() { 
		if (Form.xmlHttp.readyState==4 || Form.xmlHttp.readyState=="complete")
		 { 
			Content.setStyle("preloader","display","none")
			Form.bindResults(Form.xmlHttp.responseXML)
		 } 
	},
	stateChanged_processCityAppendQuery:function(){ 
		if (Form.xmlHttp.readyState==4 || Form.xmlHttp.readyState=="complete")
		 { 
			//alert("append results")
			document.getElementById("results").removeChild(document.getElementById("more_preloader_"+(25*Form._activePage)))
			Content.setStyle("preloader","display","none")
			Form.bindResults(Form.xmlHttp.responseXML,"append")
		 } 
	},
	queryNext:function(id){
		document.getElementById("more_wrapper_" + (25*Form._activePage)).innerHTML='<em class="next">Next 25:</em>'
		Form._activePage++
		var nextPreloader = document.createElement("div")
		nextPreloader.setAttribute("id","more_preloader_"+(25*Form._activePage))
		nextPreloader.innerHTML=document.getElementById("preloader").innerHTML
		document.getElementById("results").appendChild(nextPreloader)
		Form.doQuery(Form._activeQuery,id)
	},
	setSearch:function(s){
		var srch = s.split("___")
		var query = srch[0]
		var cat = srch[1]
		var m = srch[2]
		var mx = srch[3]
		document.getElementById("frm_search").value = query
		var optns = document.getElementById("frm_category").getElementsByTagName("option")
		for (var i in optns){
			if (optns[i].value==cat) optns[i].selected=true
		}
		
		document.getElementById("frm_min").value = m
		document.getElementById("frm_max").value = mx
		Content.showSearchLocations()
	},
	repost:function(){
		if (Form._activeQuery!="") Form.queryCity(Form._activeQuery)
	},
	checkEnter:function(e){
		var key=e.keyCode || e.which;
		if (key==13) Form.repost()
	},
	searchAll:function(){
		alert("Option coming soon. In the meantime, select a location by name.")
	}
}


/**

CONTENT

*/



var Content = {
	auxSection:false,
	setStyle:function(ele,s,t){
		document.getElementById(ele).style[s] = t
	},
	showEULA:function(){
		var eula=window.open("legal/eula_termsofuse.html","_eula","width=550,height=650,scrollbars=1")
		eula.focus()
	},
	createCookie:function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		document.cookie = name+"="+value+expires+"; path=/";
	},
	readCookie:function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},
	initUser:function(){
		
		Content.initUserLocations()
		Content.initUserSearches()
		Content.initUserRem()
		ToolTip.toggleTip(1)
	},
	initUserLocations:function(){
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		var hasLocations = false
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			
			if (c!=undefined && c!=null && c.indexOf("loc")>-1){
				var cstring = c.split("=")[1]
				hasLocations=true
				Content.bindUserLocation(cstring)
				
			}else{
				
			}
		}
		if (!hasLocations){
			var loc_wrapper = document.createElement("li")
			loc_wrapper.innerHTML = 'You have no favorite locations saved. Select from the popular location list or add your own locations below.';
			document.getElementById("yourcities_wrapper").insertBefore(loc_wrapper,document.getElementById("add_location"))
		}	
	},

	bindUserLocation:function(cstring){
	
		var locstring = cstring.split("_")[0]
		var locid = cstring.split("_")[1]
		if (document.getElementById(locid+"_wrapper") == undefined){
			var loc_wrapper = document.createElement("li")
			loc_wrapper.setAttribute("id",locid + "_wrapper")
			loc_wrapper.innerHTML = '<a href="javascript:Form.queryCity(\'' +locid + '\')">' +  locstring + '</a>';
			document.getElementById("yourcities_wrapper").insertBefore(loc_wrapper,document.getElementById("add_location"))
		}
	},
	initUserSearches:function(){
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			
			if (c!=undefined && c!=null && c.indexOf("srch")>-1){
				var cstring = c.split("=")[1]
				var cid = c.split("=")[0]
				
				Content.bindUserSearch(cstring,cid)
			}
		}
	},
	initUserRem:function(){
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			if (c!=undefined && c!=null && c.indexOf("item_")>-1){
				var cstring = c.split("=")[0].split("_")[1]
				var cid = c.split("=")[1]
				
				Content.bindRememberedItem(cstring,cid)
				
			}
			//alert(c.split("=")[1])
		}
	},
	bindUserSearch:function(cstring,cid){
		if (document.getElementById(cid+"_wrapper") == undefined){
			var src_wrapper = document.createElement("li")
			src_wrapper.setAttribute("id",cid + "_wrapper")
			src_wrapper.innerHTML = '<a href="#" onclick="javascript:Form.setSearch(\'' +cstring + '\')">' +  cstring.split("___")[0] + '</a>';
			document.getElementById("yoursearches_wrapper").insertBefore(src_wrapper,document.getElementById("search_clear"))
		}
	},
	bindRememberedItem:function(rid,rurl){
		if (document.getElementById(rid+"_wrapper") == undefined){
			var src_wrapper = document.createElement("li")
			src_wrapper.setAttribute("id",rid + "_wrapper")
			src_wrapper.innerHTML = '<a href="' + rurl + '" target="_blank">' +  rid + '</a>';
			document.getElementById("rem_items_wrapper").insertBefore(src_wrapper,document.getElementById("clear_items"))
		}
	},

	eraseCookie:function(name) {
		Content.createCookie(name,"",-1);
	},
	createLocationCookie:function(id,v){
		Content.createCookie(id,v,100)
	},
	createSearchCookie:function(v){
		var ca = document.cookie.split(';');
		var insert = true
		var id = 0
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			
			if (c.indexOf("srch")>-1){
				
				var cstring = c.split("=")[0]
				if (c.split("=")[1].split("___")[0]==v.split("___")[0]) insert=false
				id++;
			}

		}
		if (insert)	Content.createCookie("srch"+id,v,30)
		if (insert) Content.initUserSearches()
	},
	viewItem:function(u,id){
	
		var iwrapper = document.getElementById("iframe_wrapper_"+id)
		iwrapper.style.overflow="hidden";
		//iwrapper.style.height="450px"
		Juliet.JTween.Tween(
			"iframe_wrapper_"+id,
			{tweenProperty:"height",tweenDuration:1.25,tweenEase:"easeInOutQuint",tweenStart:0,tweenEnd:450}
		)
		
		iwrapper.innerHTML = '<iframe src="' + u + '" id="iframe_' + id + '" name="iframe_' + id + '" onload="Content.initItem(\'' + id + '\');"></iframe>';
		
		document.getElementById("btn_close_"+id).style.display="block"
	},
	initItem:function(id){
		window.frames["iframe_"+id].scrollTo(0,100);
	},
	closeItem:function(id){
		var iwrapper = document.getElementById("iframe_wrapper_"+id)
		Juliet.JTween.Tween(
			"iframe_wrapper_"+id,
			{tweenProperty:"height",tweenDuration:1.25,tweenEase:"easeInOutQuint",tweenStart:iwrapper.style.height,tweenEnd:0}
		)
		//iwrapper.style.height="0"
		iwrapper.innerHTML=''
		document.getElementById("btn_close_"+id).style.display="none"
	},
	rememberItem:function(id,url,ttl){
	
		if (document.getElementById("result_"+id).className=="result_active"){
			Content.eraseCookie("item_"+id)
			document.getElementById("result_"+id).className="result";
		
		}else{
			var ca = document.cookie.split(';');
			var insert = true
			
			for(var i=0;i < ca.length;i++) {
				var c = ca[i];
				
				if (c.indexOf("item")>-1){
					
					var cstring = c.split("=")[0].split("_")[1]
					if  (cstring==id) insert=false
					
				}

			}
			if (insert)	{
				Content.createCookie("item_"+id,url,30)
				document.getElementById("result_"+id).className="result_active";
				Content.bindRememberedItem(id,url)
			}
		}
		
	},
	isRemembered:function(id){
		var ca = document.cookie.split(';');
		var r = false
		
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			
			if (c.indexOf("item")>-1){
				
				var cstring = c.split("=")[0].split("_")[1]
				if  (cstring==id) r=true	
			}
		}
		return r
	},
	clearSearchCookies:function(){
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			
			if (c.indexOf("srch")>-1){
				var cstring = c.split("=")[0]
				
				Content.eraseCookie(cstring)
				
			}
		}
		document.getElementById("yoursearches_wrapper").innerHTML='<li id="search_clear" class="btn_wrapper"><a href="javascript:Content.clearSearchCookies()" class="btn_clear_search">clear</a></li>'
		Content.initUserSearches()
	},

	clearRememberedItems:function(){
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			
			if (c.indexOf("item")>-1){
				var cstring = c.split("=")[0]
				
				Content.eraseCookie(cstring)
				
			}
		}
		document.getElementById("rem_items_wrapper").innerHTML='<li id="clear_items"><a href="javascript:Content.clearRememberedItems()" class="btn_clear">clear</a></li>'
		Content.initUserRem()
	},
	clearLocationCookies:function(){
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			if (c.indexOf("loc")>-1){
				var cstring = c.split("=")[0]
				
				Content.eraseCookie(cstring)
			}
		}
	},
	addLocation:function(){
		var axcntnt = document.getElementById("results-header")
		document.getElementById("results").innerHTML = document.getElementById("locations_popup").innerHTML
		var chks = document.getElementById("results").getElementsByTagName("input")
		var o=0
		var ca = document.cookie.split(';');
		
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			o++
			if (c.indexOf("loc")>-1){
				var cstring = c.split("=")[1]
				for (var k=0;k<chks.length;k++){
					if (chks[k].value==cstring) chks[k].checked=true
				}
			}
		}
		axcntnt.innerHTML='<h1>Add location to your favourites:</h1><p>Select up to 10 locations to add to your favorites. Select a state to show only locations within state (you may need to scroll down if you have a small screen.)</p>'
	},
	addSelectedLocations:function(){
		Content.clearLocationCookies()
		document.getElementById("yourcities_wrapper").innerHTML='<!--<li id="search_all" class="btn_wrapper"><a href="javascript:Form.searchAll()" class="btn_search" >search</a></li>-->'
		document.getElementById("yourcities_wrapper").innerHTML+='<li id="add_location" class="btn_wrapper"><a href="javascript:Content.addLocation()" class="btn_add">add/modify</a></li>'	
		var chks = document.getElementById("results").getElementsByTagName("input")
		for (var i=0;i<chks.length;i++){
			var chk = chks[i]
			if (chk.checked) {
				Content.createLocationCookie(chk.id,chk.value)		
				Content.initUserLocations()
			}else{

			}
		}
		Content.showAbout()
	},

	cancelLocationSelection:function(){
		Content.showAbout()
	},
	showLocations:function(st){
		Content.setStyle("locations_popup_"+st+"_content","height","auto")
		Content.setStyle("locations_popup_"+st+"_content","overflow","auto")
	},

	toggleLocationWrapper:function(ele,st){
		try{
		for (var i=1;i<ele.options.length;i++){
			var liID = "location_" + ele.options[i].value
			var li = document.getElementById("location_" + liID)
			if (st==ele.options[i].value || st==""){
				Content.setStyle(liID,"height","auto")
				Content.setStyle(liID,"overflow","auto")
			}else{

				Content.setStyle(liID,"height","0")
				Content.setStyle(liID,"overflow","hidden")
			}
		}
		
		}catch (e){
		//continue;
		}
	},
	
	hideLocations:function(st){
		var eles = document.getElementById("locations_popup_"+st+"_content").getElementsByTagName("input")
		var chkd = false
		for (var ele in eles){
			if (eles[ele].checked==true) chkd=true
		}
		if (!chkd){
			Content.setStyle("locations_popup_"+st+"_content","height","1px")
			Content.setStyle("locations_popup_"+st+"_content","overflow","hidden")
		}
	},
	locationsInit:false,
	showSearchLocations:function(){
		
		var query=document.getElementById("frm_search").value
		if (query!="" && query!="search term"){
		if (Content.locationsInit){
			Form.repost()
		}else{
			if (Content.auxSection != true) {ToolTip.toggleTip(2)}
			
			Juliet.JTween.Tween(
				"cities_wrapper",
				{tweenProperty:"width",tweenDuration:1.5,tweenEase:"easeInOutQuint",tweenStart:212,tweenEnd:425,onTweenStart:function(){}}
			)
		}
		}else{
			alert("Please enter a search term!");
		}
		
	},

	showAbout:function(){
		Content.auxSection = true
		var axcntnt = document.getElementById("results-header")
		document.getElementById("results").innerHTML=""
		axcntnt.innerHTML='<h1>Crgslst: so fast, we left the vowels behind</h1><p>crgslst is an ajax driven search tool that allows you to search craiglist faster and scour multiple cities quickly.</p>'
		axcntnt.innerHTML+='<p>How does it work? We use craiglist\'s existing rss feeds to pull data from multiple cities. each query is handled via ajax to minimize load time and allow users to quickly find what they are looking for. <em>Please do not abuse our system!</em> crgslst is working hard not to burden craigslist. we do not allow aggregate city searches for this reason.</p>'
		axcntnt.innerHTML+='<p>Created by <a href="http://www.superhero.es" target="_blank">superhero.es</a></p>'
	},
	showOptions:function(){
		Content.auxSection = true
		var axcntnt = document.getElementById("results-header")
		document.getElementById("results").innerHTML=""
		axcntnt.innerHTML='<h1>Options</h1><p>Crgslst has a lot more options in the works. Check back soon. '
		axcntnt.innerHTML+='<p class="auxcontent">Recent Updates:</p><ul class="auxlist"><li>Update 3/06: View Within Page & Open External Window Options</li><li>Update 2/25: Map selection for locations</li></ul>'

	},
	showBugs:function(){
		Content.auxSection = true
		var axcntnt = document.getElementById("results-header")
		document.getElementById("results").innerHTML=""
		axcntnt.innerHTML='<h1>Bugs?</h1><p>there are a few bugs running around crgslst. if you find one, please contact crgslst { at } superhero.es.</p>'
		axcntnt.innerHTML+='<p class="auxcontent">Planned Updates / Known Bugs:</p><ul class="auxlist"><li class="major">BUG: Firefox 3 Beta 3 Listings show up blank. Currently Fixing</li><li>Update: View results within current window</li><li>Update: Save items by title</li><li>Update: Aggregate Searching</li><li>Bug: Safari 2.0 map clicking does not filter</li></ul>'
		
	}
}


