/* recept widget, gpy@foolishpleasure.net */

var widget_hittarecept = {
    config : { // default config
	    request: "http://widget.hittarecept.se/widget/jsonpnwt?q=",
	    request_onload: "http://widget.hittarecept.se/widget/jsonpnwt?onload=",
	    request_save: "http://widget.hittarecept.se/widget/save_click?id=",
	    style: "standard",
	    id: "recipe_widget",
	    target: null,
	    css: { // results css
	    recipe_result          : "font-family: Helvetica, Arial;",
            recipe_result_totals   : "font-size: 12px; font-family: Helvetica, Arial; color: #000; margin: 10px 0 10px 0;",
            recipe_result_title    : "font-size: 17px; font-family: Helvetica, Arial; font-weight:100; color:#0000FF;text-decoration:underline;line-height:20px;",
            recipe_result_p        : "font-family: Helvetica, Arial; font-size: 12px;line-height:16px;",
            recipe_result_em       : "color: #4D9A02; font-weight:bolder; font-family: Helvetica, Arial; font-style: normal;line-height:16px;",
            recipe_result_url      : "color: #4D9A02;font-family: Helvetica, Arial;margin-bottom:15px;font-size: 12px;line-height:16px;",
	    recipe_more_results    : "margin-bottom:15px;",
            recipe_more_results_link    : "font-size:17px;color:#0000FF;font-family: Helvetica, Arial;text-decoration:none; font-weight:100",
            recipe_box_style       : "text-align:left;line-height:13pt;font-size:12px;width:222px;margin:0px;padding:5px;border:0;border: 1px solid #ccc;",
	    recipe_box_table_style : "font-family: Helvetica, Arial;width:450px; border:0px;margin-left:-2px;margin-top:1px;",
	    recipe_box_tagcloud_style : "font-family: Helvetica, Arial;text-align:left;line-height:13pt;font-size:12px;width:454px;margin:0px;padding:7px;border:0;border: 1px solid #ccc;margin-top:3px;",
	    tagcloud0 : "font-size:1.0em;padding:0em;color:#ACC1F3;z-index:10;position:relative;text-decoration:none;",
	    tagcloud1 : "font-size:1.1em;padding:0em;color:#86A0DC;z-index:9;position:relative;text-decoration:none;",
	    tagcloud2 : "font-size:1.2em;padding:0em;color:#4C6DB9;z-index:8;position:relative;text-decoration:none;",
	    tagcloud3 : "font-size:1.3em;padding:0em;color:#4C6DB9;z-index:7;position:relative;text-decoration:none;",
	    tagcloud4 : "font-size:1.5em;padding:0em;color:#395CAE;z-index:6;position:relative;text-decoration:none;",
	    tagcloud5 : "font-size:1.6em;padding:0em;color:#395CAE;z-index:5;position:relative;text-decoration:none;",
	    similar_searches : "font-family: Helvetica, Arial;font-size: 12px;color:#4d9a02;margin-top:3px;margin-bottom:10px;margin-left:0px;",
	    similar_searches_link : "color: #000;text-decoration: underline;",
	    info_text : "border-top: 0px solid #ccc;border-bottom: 1px solid #ccc;width:100%;margin-top:10px;padding-bottom:5px;font-family: Helvetica, Arial;font-size: 12px;line-height:16px;",
	    query_info : "font-family:Arial,Helvetica;font-size:24px;margin-top: 15px;margin-bottom: 10px;",
	    customer_logo : "margin-bottom: -4px;"
	    //font-family: Arial, Helvetica, sans-serif;
	}
    },
    get: function(id){
        return document.getElementById(id);
    },
     set_focus: function(id){
         	 document.getElementById(id).focus();
    },
    addelement: function(element,target){
        this.get(target).appendChild(element);
    },
    insert: function(string,element){
        this.get(element).innerHTML = this.get(element).innerHTML + string;
    },
    update: function(element,string){
        this.get(element).innerHTML = string ? string : "";
    },
    get_config: function(){ // override default config if present        
        var params = this.get("widget_script").src.indexOf("?") > 1 ? this.get("widget_script").src.split("?")[1].split("&") : false;
        if(params){
            for (var i = 0;i<params.length;i++){
                this.config[params[i].split("=")[0]] = params[i].split("=")[1];
            }
        }
    },
    removecss: function(elements){
        for(var i=0; i<elements.length;i++){
            this.get(elements[i]).style.cssText = "";
        }
    },
    progress: function(){
        var button = this.get("recipe_submit");
        button.disabled == false ? button.value = "Laddar..." : button.value = "Hitta recept!";
        button.disabled == false ? button.disabled = true : button.disabled = false;
    },
    request: function(query){
	this.search_query = document.getElementById("recipe_query").value=query  ? query :  this.get("recipe_query").value;
	if(this.search_query != ""){
	//this.progress();
	var button = this.get("recipe_submit");
	button.disabled = true;
	button.value = "Laddar...";
            var tag = document.createElement("script");
                 tag.setAttribute("type","text/javascript");
                 tag.setAttribute("src",this.config.request+escape(this.search_query)+"&callback=widget_hittarecept.results");
            document.getElementsByTagName("head")[0].appendChild(tag);            
        }
    },
    onload: function(){
	this.onload='true';
	//this.progress();
	var button = this.get("recipe_submit");
	button.disabled = true;
	button.value = "Laddar...";
	document.getElementById("recipe_query").value="";
	var url_param = this.get_url_param('q');
	var q = "";
	if (url_param != ""){
		this.search_query = document.getElementById("recipe_query").value=  url_param.replace(/\+/, " ");
		q="&q="+escape(url_param);
	}
	var tag = document.createElement("script");
             tag.setAttribute("type","text/javascript");
             tag.setAttribute("src",this.config.request_onload+this.onload+"&callback=widget_hittarecept.results"+q);
             document.getElementsByTagName("head")[0].appendChild(tag);            
     },
    get_url_param: function(name){
	name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
	var regexS = "[\\?&]"+name+"=([^&#]*)"; 
	var regex = new RegExp( regexS ); 
	var results = regex.exec( window.location.href ); 
	if( results == null )    return ""; 
	else return decodeURI(results[1]);
    },
    save: function(id){
	this.save=id;
	this.search_query = this.get("recipe_query").value;
        var tag = document.createElement("script");
             tag.setAttribute("type","text/javascript");
             tag.setAttribute("src",this.config.request_save+this.save+"&query_include="+escape(this.search_query));
             document.getElementsByTagName("head")[0].appendChild(tag);            
     },
    results: function(json){
        this.json = json;
        this.get_config();
        //this.progress();
        this.set_focus("recipe_query");
	this.styles();
        this.show_result();
	var button = this.get("recipe_submit");
	button.disabled = false;
	button.value = "Hitta recept!";
	
    },
show_result: function(){        
        if(!this.get("recipe_boxes")){
            var recipe_boxes = document.createElement("div");
	    var recipe_results = document.createElement("div");
	    var recipe_boxes_big = document.createElement("div");
            recipe_boxes.setAttribute("id","recipe_boxes");
	    recipe_results.setAttribute("id","hittarecept_results");
	    recipe_boxes_big.setAttribute("id","recipe_boxes_big");
	    this.addelement(recipe_boxes_big,this.config.target || this.config.id);
	    this.addelement(recipe_results,this.config.target || this.config.id);
	    this.addelement(recipe_boxes,this.config.target || this.config.id);
	    
        } else {
	    this.update("recipe_boxes"); // clean up previous results
	    this.update("hittarecept_results"); // clean up previous results
	}
	

	if(this.search_query !=null && this.json.n !=null ){
  	        //var info_text="<div style='"+this.config.css.info_text+"'><b>S&ouml;kresultatet visar recept fr&aring;n olika platser p&aring; n&auml;tet. N&auml;r du klickar p&aring; en l&auml;nk kommer du till respektive recepts hemsida.<b></div>"
		//this.insert(info_text,"hittarecept_results");
		this.insert("<p style='"+this.config.css.query_info+"'>Hittade <b>"+this.json.n+"</b> recept med <b>"+this.json.query+"!</b></p> ","hittarecept_results");
		
	}
	
	if(this.json.similar_searches !=null && this.json.similar_searches.length >0){     
		var recipe_similar_searches_html = "<div style='"+this.config.css.similar_searches+"'><strong>Liknande s&ouml;kningar:</strong> ";
		for(var i=0; i< this.json.similar_searches.length; i++){
			var include	= this.json.similar_searches[i].include
			recipe_similar_searches_html += "<a href='#' onclick='widget_hittarecept.request(\""+include+"\"); return false;' style='"+this.config.css.similar_searches_link+"'>"+include+"</a>&nbsp; ";
		}
		recipe_similar_searches_html += "</div>"
		this.insert(recipe_similar_searches_html,"hittarecept_results");
	}
			
	if(this.json.recipes !=null){        
	  for(var i=0; i< this.json.recipes.length; i++){ // loop the recipes
		 /* if(this.json.recipes[i].top_result == 1){
			   var title        = "<img src='http://widget_hittarecept.hittarecept.se/images/hd-logo.gif' alt='hd-logo' style='"+this.config.css.customer_logo+"'><a href='"+this.json.recipes[i].URL+"' style='"+this.config.css.recipe_result_title+"' target ='_blank' onmousedown='widget_hittarecept.save(\""+this.json.recipes[i].id+"\");'>"+this.json.recipes[i].title+"</a><br>";
			   var howto     = "<span class='recipe_result_howto' style='"+this.config.css.recipe_result_p+"'><em style='"+this.config.css.recipe_result_em+"'>Recept fr&aring;n nwt: </em>"+this.json.recipes[i].howto+"</span><br>";
			   var url          = "<span class='recipe_result_url' style='"+this.config.css.recipe_result_url+"'>"+this.json.recipes[i].truncated_URL+"</span><p>";
			   this.insert(title+howto+url,"hittarecept_results");			  
		  }
		  else{*/
			  var title       = "<p><a href='"+this.json.recipes[i].URL+"' style='"+this.config.css.recipe_result_title+"' target ='_blank' onmousedown='widget_hittarecept.save(\""+this.json.recipes[i].id+"\");'>"+this.json.recipes[i].title+"</a><br>";
			  if (this.json.recipes[i].ingredients != null){
				  var ingredients = "<span class='recipe_result_ingredients' style='"+this.config.css.recipe_result_p+"'><em style='"+this.config.css.recipe_result_em+"'>Ingredienser: </em>"+this.json.recipes[i].ingredients+"</span><br>";
			  }else{ var ingredients = ""; }
			  var howto       = "<span class='recipe_result_howto' style='"+this.config.css.recipe_result_p+"'><em style='"+this.config.css.recipe_result_em+"'>G&ouml;r s&aring; h&auml;r: </em>"+this.json.recipes[i].howto+"</span><br>";
			  var url         = "<span class='recipe_result_url' style='"+this.config.css.recipe_result_url+"'>"+this.json.recipes[i].truncated_URL+"</span><br><br>";
			  this.insert(title+ingredients+howto+url,"hittarecept_results");
		/*  }*/
	  }
        }
	
	if(this.json.n > 8 && this.json.n!=null) {
		var more = "<div style='"+this.config.css.recipe_more_results+"'><a target ='_blank' href='http://www.hittarecept.se/recept/"+escape(this.json.query)+"/2'  style='"+this.config.css.recipe_more_results_link+"'>Fler recept med <b>"+this.json.query+"</b> p&aring; hittarecept.se</a>.</div>";
	        this.insert(more, "hittarecept_results");
	}
	else if(this.json.n <= 8 && this.json.n!=null){
	        this.insert("<br><br>", "hittarecept_results");
	}
		
	if(this.json.popular_queries != null){
		var recipe_popular_searches_html = "<b>Popul&auml;ra recepts&ouml;kningar p&aring; nwt.se</b><br>";
		for(var i=0; i< this.json.popular_queries.length; i++){
			var include	= this.json.popular_queries[i].include;
			var tagcloud	= this.json.popular_queries[i].tagcloud;
			var css=eval("this.config.css.tagcloud" + tagcloud);
			recipe_popular_searches_html += "<a href='#' onclick='widget_hittarecept.request(\""+include+"\"); return false;' class='tagcloud"+tagcloud+"' style='"+css+"'>"+include+"</a>&nbsp; ";
		}
		this.insert("<div style='"+this.config.css.recipe_box_tagcloud_style+"'>"+recipe_popular_searches_html+"</div>","recipe_boxes_big");
	}
	
	if(this.json.searches !=null && this.json.viewed !=null ){

		var recipe_last_searches_html = "<b>Andra s&ouml;kningar just nu</b><br>";
		for(var i=0; i< this.json.searches.length; i++){
			var include	= this.json.searches[i].include
			 recipe_last_searches_html += "<a href='#' onclick='widget_hittarecept.request(\""+include+"\"); return false;' style='color:#4C6DB9;'>"+include+"</a><br>";
		}
	
		var recipe_last_recipes_html = "<b>Andra tittar just nu p&aring;</b><br>";
		for(var i=0; i< this.json.viewed.length; i++){
			var title=""+this.json.viewed[i].title+"";
			var URL=""+this.json.viewed[i].URL+"";
			recipe_last_recipes_html += "<a href="+URL+" target ='_blank' style='color:#4C6DB9;'>"+title+"</a><br>";
		}
		this.insert("<table style='"+this.config.css.recipe_box_table_style+"'><tr><td width=50%><div style='"+this.config.css.recipe_box_style+"'>"+recipe_last_searches_html+"</div></td><td width=50%> <div style='"+this.config.css.recipe_box_style+"'>"+recipe_last_recipes_html+"</div></td></tr></table>","recipe_boxes");
	}
	

},
    styles: function(){
        if(this.config.style == "none"){
            this.config.css = {};
            this.removecss(["recipe_form","recipe_p","recipe_link","recipe_fieldset","recipe_headline","recipe_query","recipe_submit"])
        }
    }
};

window.onload = function(){
    widget_hittarecept.get_config();
    widget_hittarecept.styles();
    widget_hittarecept.onload();
    
    
}
/*
function startHittaRecept(){
    widget_hittarecept.get_config();
    widget_hittarecept.styles();
    widget_hittarecept.onload();
}

window.addEvent('domready', startHittaRecept);
*/