var criteria_type = "zip"; //zip or address
var page_size = -1;
var max_pages = -1;
var result_count = -1;
var page_number = 1;
var current_page = 1;
var selected_map = "nomap";
var service_url = SITEROOT + "/webservices/finddoctors/json"; 
var service_url_map = SITEROOT + "/webservices/getdoctormap"; 
var loader = SITEROOT + "/images/shell/loader.gif";		
var loader_big = SITEROOT + "/images/shell/loader_big.gif";		
var spacer = SITEROOT + "/images/shell/spacer.gif";		

var a_lert = function(msg)
{
    //alert(msg);
}
var show_result = function(data)
{
   /* meta header */ 
   var obj = data.meta_header;
    page_size = obj.page_size;
    max_pages = obj.max_pages;
    result_count = obj.result_count;

   $("div.results_amount span.total_found").html(result_count);
   $("div.results_amount span.results_found").html(" Results found");

    
    page_number = obj.page_number;
    if( obj.result_count < 1){
        //a_lert("no doctor records found");
    }
    try {
        var doctors_obj = data.Doctors;
        } catch( error) {
            a_lert("err:" + error)
        }
        var content = "";
        content += "<table width=\"650\" cellspacing=\"0\" cellpadding=\"0\" class=\"results_table\">";
        content += "<tr style=\"background: #ebebeb\; height: 23px\; font-weight: normal\;\">";
        content += "    <th width=\"265\" style=\"padding: 3px 0 0 30px\;\"><span style=\"font-weight: normal;\">Specialist Name<\/span><\/th>";
        content += "    <th width=\"180\" style=\"padding: 3px 0 0 30px\;\"><span style=\"font-weight: normal;\">Distance<\/span><\/th>";
        content += "    <th width=\"200\" style=\"padding: 3px 0 0 30px\;\"><span style=\"font-weight: normal;\">Map<\/span><\/th>";
        content +=  "<\/tr>";
        for( indx=0; indx < doctors_obj.length; indx++) {
                    content += "<tr>";
                    content += "    <td valign=\"top\" class=\"results_list_item\">";
                    content += "        <a  id=\"" + indx  + "\" class=\"result_link\" href=\"#\" onclick=\"findadoctorTrack('','viewDetails'); return false\;\">"  + "" + doctors_obj[indx].name +  "<\/a><br\/>";
                    content += "        <p style=\"margin: 7px 0 0 0\;\">" +  doctors_obj[indx].address + "<br/>" + doctors_obj[indx].city + "," + doctors_obj[indx].state+ "," + doctors_obj[indx].zipcode + "<br\/>" + doctors_obj[indx].phone + "<\/p>";
                    content += "    <\/td>";
                    content += "    <td valign=\"top\" class=\"results_list_item\"><span class=\"bold_green_text\">" + doctors_obj[indx].radius + "<\/span><\/td>";
                    content += "    <td valign=\"top\" class=\"results_list_item\" valign=\"right\"><a id=\"" + indx  + "\" class=\"result_link map\" href=\"#\" onclick=\"return false\;\">";
                    content += "    <img class=\"mapimage_"+ doctors_obj[indx].zipcode + "\" id=\"mapimage_"+ doctors_obj[indx].zipcode + "\"  src=\"" + spacer + "\" border=\"0\" style=\"border:0px;\" \/><\/a><\/td>";
                    //content += "    <img class=\"mapimage_"+ doctors_obj[indx].zipcode + "\" id=\"mapimage_"+ doctors_obj[indx].zipcode + "\"  src=\"" + loader + "\" border=\"0\" \/><\/a><\/td>";
                    content += "<\/tr>";
        }
        content += "<\/table>";
	$("div#records_area").html(content);
        $("div#loader_image").html("");

   var doctors_obj_renewed = data.Doctors;
   
   for( indx=0; indx < doctors_obj_renewed.length; indx++) {
            try {
             var zip = doctors_obj_renewed[indx].zipcode;
             var vurl = service_url_map + "?width=172&height=104&diff=" + indx + "&spclty=rheum&fz=" + zip 
             + "&fa=" + doctors_obj_renewed[indx].address + "&fc=" + doctors_obj_renewed[indx].city + "&fs=" + doctors_obj_renewed[indx].state;
            }
           catch(error) {
                a_lert('error:' + error);
           }
        }        
        var pager ="";

        if(max_pages != 1)
        {

            if(current_page == 1 ){
                pager += "<a id='1' class=\"current\" href='#'>First<\/a>";
            } else {
                pager += "<a id='1' class=\"regular\" href='#'>First<\/a>";
            }
            pager += "&nbsp\;";
            if(current_page > 1 ){
                pager += "<a class=\"regular\" id='" + Number(current_page-1) + "' href='#'>Previous<\/a>";
            }   
            pager += "&nbsp;";
    
    
            for( indx=1; indx < max_pages+1; indx++) {
                if( indx == page_number ) {
                    pager += "<a id=\"" + indx  + "\" class=\"current\" href=\"#\">" +  indx + "<\/a>&nbsp;";
                } else {
                    pager += "<a id=\"" + indx  + "\" class=\"regular\" href=\"#\">" +  indx + "<\/a>&nbsp;";
                }
            }
            if(current_page < max_pages ){
                var nxt_pg = Number(current_page + 1);
                pager += "<a id='" + nxt_pg + "' class=\"regular\"  href='#'>Next<\/a>";
            }        
            pager += "&nbsp\;";
            if(current_page == max_pages ){
                pager += "<a class=\"current\" id='" + max_pages + "' href='#'>Last<\/a>";
            } else {
                pager += "<a class=\"regular\" id='" + max_pages + "' href='#'>Last<\/a>";
            }

        }







	$("div#search_pages").html(pager);

        $("a.regular").click(function(e) {
            //$("div#search_pages").html("<img src=\"" + loader + "\"\/>");
            //$("div#loader_image").html("<img src=\"" + loader + "\"\/>");
                try {
                    current_page = Number($(this).attr("id"));
                }
                catch(error){
                    a_lert('error' + error);
                }
               var doctype = $('input#specialization').val();
               
                var specialist_radio = $('[name=specialist_type]:checked').val();
               if (!doctype) {
                    doctype = $('[name=specialist_type]:checked').val();
               }
               if (criteria_type == "zip")
                {
                     check_service_byzip(doctype);
                } else {
                     check_service_byaddress();
                }
                 e.preventDefault();
	});


	$("a.result_link").click(function(e)
	{
               var docobj = data.Doctors;
               var sdetail_output ="";
               var indx = $(this).attr("id");
               $("img.main_map").attr("src", loader_big);

               addyQuery = docobj[indx].address.replace(/ /gi, "+")
               var mqLink = "http://www.mapquest.com/maps?city="+docobj[indx].city+"&state="+docobj[indx].state+"&address="+addyQuery+"&zipcode="+docobj[indx].zipcode+"&country=US&geocode=ADDRESS";

               sdetail_output += "<p><span class='doc_name'>" + docobj[indx].name + "<\/span><br\/>"; 
               sdetail_output += docobj[indx].address + "<br\/>";
               sdetail_output += docobj[indx].city + "," +  docobj[indx].state + "," +  docobj[indx].zipcode  + "<br\/>";
               sdetail_output += docobj[indx].phone  + "<p\/>";
               sdetail_output += "<p>For more map details and driving directions, go to <a href='"+mqLink+"' target='_blank' onclick='findadoctorTrack(\"\",\"gotoMapquest\");'>MapQuest<\/a>.";
               sdetail_output += "<\/p><p><a class='back_to_search' href='#' onclick='backToResults(); return false\;'>Back to Search Results<\/a><\/p>";

                $("div.search_detail_text").html(sdetail_output);
                $("div.cta_area span.search_object").html(docobj[indx].name);
               
                 var vurl_big = service_url_map + "?width=400&height=280&diff=" + indx + "&spclty=rheum&fz=" + doctors_obj_renewed[indx].zipcode
                 + "&fa=" + doctors_obj_renewed[indx].address + "&fc=" + doctors_obj_renewed[indx].city + "&fs=" + doctors_obj_renewed[indx].state;
               //a_lert("vurl_big=" + vurl_big);
               
               getMap_big(vurl_big);

		//var top = $("div.search_detail_text").get(0).offsetTop;
                var top = 450;
                $(window).scrollTo(top, 300);
		$("div.results_detail").slideDown('slow');
		$("div#search_results_summary").slideUp('slow');
	});
	
   }







var getMap = function(vurl, zip)
{
    //a_lert("getmapurl=" +  vurl)
    $.getJSON(vurl, function(d) 
    {
    var vmap = "";
        var o = d.location;
        vmap = o.mapurl;
         $("img.mapimage_" + zip ).attr("src", vmap);
    });
}

var getMap_big = function(vurl)
{
    $.getJSON(vurl, function(d) 
    {
    var vmap = "";
        var o = d.location;
        vmap = o.mapurl;
        $("img.main_map").attr("src", vmap);
    });
}



var show_result_map = function(data)
{
   /* meta header */ 
    //a_lert("data=" + data);
    //var obj = data;
    //page_size = obj.page_size;
    page_number = obj.page_number;
    if( obj.result_count < 1){
        //a_lert("no doctor records found");
    }
    var mapurl ="";
    $("div#search_pages").html(mapurl);
   }



var check_service_byzip = function(specialization){
    //restful service call finddoctors
    //    var doctype = $('input#specialization').val();
    var doctype = specialization;
    var params = "&type=" + doctype;
    var psz = $('select#page_size').val();
    var zc = $('input#zipcode').val();
    params = "?fz=" + zc + params;
    params += "&pagesize=" + psz;
    params += "&startpage=" + current_page;
    try {
          //a_lert("zc=" + zc);
          //a_lert("service_url + params=" + service_url + params);
          var result = $.getJSON(service_url + params,show_result);
        } catch(error){
            a_lert('error:'+error)
        }
}

var check_service_byaddress = function(specialization){
   //a_lert('check_service_byaddress='+specialization);
   // var doctype = $('input#specialization').val();
   var doctype = specialization;
   //a_lert('doctype by address='+doctype);
   var params = "&type=" + doctype;
    var psz = $('select#page_size').val();
    //--: address not handled by mckesson correctly
    var paddress = $('input#address').val();
    var pcity = $('input#city').val();
    var pstate = $('select#frm_state').val();
    params = "?fc=" + pcity + params;
    params += "&fs=" + pstate;
    params += "&fa=" + paddress;
    params += "&pagesize=" + psz;
    params += "&startpage=" + current_page;
    try {
      //a_lert("service_url + params :" +service_url + params);
      var result = $.getJSON(service_url + params,show_result);
    } catch(error){
        a_lert('error:'+error)
    }
}


var results_init = function()
{
    $("div#results_find_specialist").hide();
    $("div.results_detail").hide();
    
    $("img#search_btn_zip_specialist").click(function(e) {
        if (val_findazip()) { 
            criteria_type = "zip"
            $("div#records_area").html("");
            $("div.results_amount span.total_found").html("");
            $("div.results_amount span.results_found").html("");
            $("div#search_pages").html("<img src=\"" + loader + "\"\/>");
            var x = $('[name=specialist_type]:checked').val();
            //a_lert(" search_btn_zip_specialist x=" + x);
            current_page=1;
            check_service_byzip(x);
            $("div#results_find_specialist div#search_results_header").html("ZIP Code");
             var zc = $('input#zipcode').val();
            $("div#search_results_summary div.cta_text span.search_object").html(zc);
            $("div#search_pane").slideUp('slow');
            $("div#results_find_specialist").slideDown('slow');  
            mecTrack('deienb_NEWEnbrelFindaDermatologistResults_6');
            
            findadoctorTrack('zip', 'search');
        }
        e.preventDefault();
    });
    
    $("img#search_btn_zip").click(function(e) {
        if (val_findazip()) { 
            criteria_type = "zip"
            current_page=1;
            $("div#records_area").html("");
            $("div.results_amount span.total_found").html("");
            $("div.results_amount span.results_found").html("");
            $("div#search_pages").html("<img src=\"" + loader + "\"\/>");
            var doctype = $('input#specialization').val();
            check_service_byzip(doctype);

            $("div#results_find_specialist div#search_results_header").html("ZIP Code");
             var zc = $('input#zipcode').val();
            $("div#search_results_summary div.cta_text span.search_object").html(zc);
            $("div#search_pane").slideUp('slow');
            $("div#results_find_specialist").slideDown('slow');  
            mecTrack('deienb_NEWEnbrelFindaDermatologistResults_6');
            
            findadoctorTrack('zip', 'search');
        }
        e.preventDefault();
    });
        
    $("select#page_size").change(function(e) {
        //$("div#search_pages").html("<img src=\"" + loader + "\"\/>");
        //$("div#loader_image").html("<img src=\"" + loader + "\"\/>");
        current_page = 1;
        var doctype = $('input#specialization').val();
        //a_lert("doctype=" + doctype);
        if(criteria_type == "zip") {
         check_service_byzip(doctype);
        } else {
         check_service_byaddress(doctype);
        }
        e.preventDefault();
    });


    $("input#search_btn_address_specialist").click(function(e) {
         if (val_findaaddress()) {
            criteria_type = "address";
            current_page=1;
            $("div#search_results_summary div.cta_text span.search_object").html("");
            $("div#search_pane").slideUp('slow');
            $("div#results_find_specialist").slideDown('slow');
            $("div#records_area").html("");
            $("div.results_amount span.total_found").html("");
            $("div.results_amount span.results_found").html("");
            //$("div#search_pages").html("<img src=\"" + loader + "\"\/>");

            var x = $('[name=specialist_type]:checked').val();
            //a_lert('x=' + x);    
            check_service_byaddress(x);

            $("div#results_find_specialist div#search_results_header").html("Address");
             var v_fulladdress =  "<br/>" + $('input#address').val() + "<br/>" + $('input#city').val() + "," +  $('select#frm_state').val();
            $("div#search_results_summary div.cta_text span.search_object").html(v_fulladdress );
            $("div#search_pane").slideUp('slow');
            $("div#results_find_specialist").slideDown('slow');
            mecTrack('deienb_NEWEnbrelFindaDermatologistResults_6');
            
            findadoctorTrack('address', 'search');
         }
        e.preventDefault();         
    });


    $("input#search_btn_address").click(function(e) {
         if (val_findaaddress()) {
            criteria_type = "address";
            current_page=1;
            $("div#search_results_summary div.cta_text span.search_object").html("");
            $("div#search_pane").slideUp('slow');
            $("div#results_find_specialist").slideDown('slow');
            $("div#records_area").html("");
            $("div.results_amount span.total_found").html("");
            $("div.results_amount span.results_found").html("");
            //$("div#search_pages").html("<img src=\"" + loader + "\"\/>");

            var doctype = $('input#specialization').val();
            check_service_byaddress(doctype);

            $("div#results_find_specialist div#search_results_header").html("Address");
             var v_fulladdress =  "<br/>" + $('input#address').val() + "<br/>" + $('input#city').val() + "," +  $('select#frm_state').val();
            $("div#search_results_summary div.cta_text span.search_object").html(v_fulladdress );
            $("div#search_pane").slideUp('slow');
            $("div#results_find_specialist").slideDown('slow');
            mecTrack('deienb_NEWEnbrelFindaDermatologistResults_6');
            
            findadoctorTrack('address', 'search');
         }
        e.preventDefault();         
    });
	
    $("a.result_link").click(function()
    {
        //var top = $("div.search_detail_text").get(0).offsetTop;
        var top = 450;
        $(window).scrollTo(top, 300);
        $("div.results_detail").slideDown('slow');
        $("div#search_results_summary").slideUp('slow');
            
    });
    
/*
    $("a.back_to_search").click(function(e) {
        backToResults(e);
    });
*/    
    
    $("a.new_search").click(function(e) {
            $("div#search_pane").slideDown('slow');
            $("div.results_detail").slideUp('slow');
            $("div#search_results_summary").slideDown('slow');
            $("div#results_find_specialist").slideUp('slow');
            findadoctorTrack('', 'newSearch'); 
            e.preventDefault();
    });
    	
  //after init- for interpage passthrough.    

    var zcheck = $('input#zipcode').val();
    //a_lert("zcheck=" + zcheck); 
    
    // test if either T&C checkbox is checked or if the request came from the search page (query string c=1)
    var tcChecked = false;   
    var searchPageTC = getQueryValue("c");
    if(searchPageTC == "1") {       
        $('input.val_checkbox_tandc').attr('checked',true); 
        tcChecked = true;
    } else {
        tcChecked = $('input.val_checkbox_tandc').is(':checked');        
    }
    
    if( zcheck != undefined && zcheck != '' && tcChecked )
    //if( zcheck != undefined && zcheck != '' )    
    {
          inter_page_docfind(); // or $("img#search_btn_zip").trigger("clicked");
    } else {
        //a_lert("bypassed check_service_byzip()");
    }


}

var backToResults = function() {
    $("div#search_results_summary").slideDown('slow');
    $("div.results_detail").slideUp('slow');
}

var inter_page_docfind = function()
{
       criteria_type = "zip"
        $("div#records_area").html("");
        $("div.results_amount span.total_found").html("");
        $("div.results_amount span.results_found").html("");
        //$("div#search_pages").html("<img src=\"" + loader + "\"\/>");

        var doctype = $('input#specialization').val();
        check_service_byzip(doctype);

        $("div#results_find_specialist div#search_results_header").html("ZIP Code");
         var zc = $('input#zipcode').val();
        $("div#search_results_summary div.cta_text span.search_object").html(zc);
        $("div#search_pane").slideUp('slow');
        $("div#results_find_specialist").slideDown('slow');            
        //$("div#search_pages").html("");

}



var specialist_init = function()
{
    $(".radio").click(function(e) {
        var grpName = this.nextSibling.name;
        $('#specialization').val($("input[name='" + grpName + "']:checked").val());            
    });  
}

jQuery().ready(results_init);


