﻿
(function($)
{
	$.fn.imageLibrarySearchResult = function(caseName)
	{
		// browser information
		var browser;
		var navUA = navigator.userAgent;		
		
		if($.browser.mozilla) { browser = "Firefox"; }
		else if($.msie) { browser = "Internet Explorer"; }
		else if($.browser.opera) { browser = "Opera"; }
		else if($.browser.safari) { browser = "Safari"; }
		else { browser = "Unknown"; }
				
		function LoadDetails(caseName)
		{
        	var soapEnv =
        	    "<soapenv:Envelope xmlns:soapenv='http://schemas.xmlsoap.org/soap/envelope/'> \
        	        <soapenv:Body> \
        	             <GetListItems xmlns='http://schemas.microsoft.com/sharepoint/soap/'> \
        	                <listName>ASSHImageLibrary</listName> \
        	                <query> \
								<Query> \
									<Where> \
										<Eq> \
											<FieldRef Name='CaseName' /> \
											<Value Type='Text'>" + caseName + "</Value> \
										</Eq> \
									</Where> \
								</Query> \
        	                </query> \
        	                <viewFields> \
        	                    <ViewFields> \
									<FieldRef Name='AnatomicalRegion' /> \
									<FieldRef Name='AuthorIsVisible' /> \
									<FieldRef Name='CaseComments' /> \
									<FieldRef Name='CaseName' /> \
									<FieldRef Name='CPT' /> \
									<FieldRef Name='Diagnosis' /> \
									<FieldRef Name='ICD' /> \
									<FieldRef Name='Implant' /> \
									<FieldRef Name='Procedure' /> \
									<FieldRef Name='SetAsDefaultImage' /> \
									<FieldRef Name='UserHasAgreed' /> \
									<FieldRef Name='CaseYear' /> \
									<FieldRef Name='ID' /> \
									<FieldRef Name='EncodedAbsUrl' /> \
									<FieldRef Name='EncodedAbsThumbnailUrl' /> \
									<FieldRef Name='Author' /> \
									</ViewFields> \
        	                </viewFields> \
							<queryOptions> \
								<QueryOptions> \
									<Folder>ImageLibrary/" + caseName + "</Folder> \
								</QueryOptions> \
							</queryOptions> \
        	            </GetListItems> \
        	        </soapenv:Body> \
        	    </soapenv:Envelope>";

			$.ajax(
			{
				url: "/Members/Benefits/ImageLibrary/_vti_bin/lists.asmx",
				type: "POST",
				dataType: "xml",
				data: soapEnv,
				complete: processResult,
				contentType: "text/xml; charset=\"utf-8\""
			});
		}
		
        // Find the rows in an XMLHttpRequest.  This includes a workaround for Safari and Chrome's
        // aversion to the z:row namespace.
        function getZRows(rXML) {
          var rows;
          var itemCount = $(rXML).find("rs\\:data").attr("ItemCount");
          if (rXML.getElementsByTagName("z:row").length == 0 && itemCount == undefined) {
           rows = rXML.getElementsByTagNameNS("*", "row");
          } else {
           rows = rXML.getElementsByTagName("z:row");
          }
          return rows;
         }
		
		function processResult(xData, status)
		{
			var liHtml = '';
			var divDetailDesc = '';
			var defaultFound = false;
			
			$(getZRows(xData.responseXML)).each(function()
			{
				//console.log("processing item");
				var owsAnatomicalRegion = $(this).attr('ows_AnatomicalRegion');
				var owsAuthorIsVisible = $(this).attr('ows_AuthorIsVisible');
				var owsCaseComments = $(this).attr('ows_CaseComments');
				var owsCaseName = $(this).attr('ows_CaseName');
				var owsCPT = $(this).attr('ows_CPT');
				var owsDiagnosis = $(this).attr('ows_Diagnosis');
				var owsICD = $(this).attr('ows_ICD');
				var owsImplant = $(this).attr('ows_Implant');
				var owsProcedure = $(this).attr('ows_Procedure');
				var owsSetAsDefaultImage = $(this).attr('ows_SetAsDefaultImage');
				var isDefault = new Number(owsSetAsDefaultImage).toFixed();
				var owsUserHasAgreed = $(this).attr('ows_UserHasAgreed');
				var owsCaseYear = $(this).attr('ows_CaseYear');
				var caseYear = '';
				if ((owsCaseYear != null) && (owsCaseYear != undefined)) { caseYear = new Number(owsCaseYear).toFixed(); }
				var owsID = $(this).attr('ows_ID');
				var owsEncodedAbsUrl = $(this).attr('ows_EncodedAbsUrl');
				var owsEncodedAbsThumbnailUrl = $(this).attr('ows_EncodedAbsThumbnailUrl');
				var owsAuthor = $(this).attr('ows_Author');
				var author = 'N\A';
				
				if (owsAuthorIsVisible)
				{
					author = owsAuthor.split(';#')[1];
				}				
				
				var imgHtml = "<img  alt='" + owsCaseName + "' id='imgLibDetailThumbImg-" + owsID + "' src='" + owsEncodedAbsThumbnailUrl + "' height='85px' width='75px' />";
				var aHtml = "<a class='ASSHLightBoxImage' id='" + owsID + "' href='" + owsEncodedAbsUrl + "'>" + imgHtml + "</a>";
				liHtml += "<li id='imgLibDetailThumb-" + owsID + "' class='imgLibDetailThumb'>" + aHtml + "</li>";
				
				if (isDefault == 1 && defaultFound == false)
				{
					defaultFound = true;
					$("#imgLibDetailHeader").html("<span>"+owsCaseName+" Images</span>");
					var downloadlink = "<a id=\"CaseDownloadLink\" href=\"?DownloadCase="+owsCaseName+"\" title=\"download case images\" ><img src=\"/Style Library/images/zip.png\" alt=\"download file\" /></a>";
					$("#imgLibDetailHeader").append(downloadlink);
					divDetailDesc = 
						"<div id='imgLibDetailThumbDesc-" + owsID + "' class='imgLibDetailThumbDesc' visible='false'>" +					
								
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Diagnosis:</div> \
						<div class='formFieldValue'>" + owsDiagnosis + "</div></div>" +
		
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Procedure:</div> \
						<div class='formFieldValue'>" + owsProcedure + "</div></div>" +
		
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Anatomical Region:</div> \
						<div class='formFieldValue'>" + owsAnatomicalRegion + "</div></div>" +
	
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Case Comments:</div> \
						<div class='formFieldValue'>" + owsCaseComments  + "</div></div>" +
	
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>CPT:</div> \
						<div class='formFieldValue'>" + owsCPT + "</div></div>" +
				
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>ICD-9:</div> \
						<div class='formFieldValue'>" + owsICD + "</div></div>" +
		
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Implant:</div> \
						<div class='formFieldValue'>" + owsImplant + "</div></div>" +
		
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Case Date (yyyy):</div> \
						<div class='formFieldValue'>" + caseYear + "</div></div>" +
		
						"<div class='detailFormField'> \
						<div class='formFieldLabel'>Author:</div> \
						<div class='formFieldValue'>" + author + "</div></div></div>"				
					
					//$('div#imgLibDetailDesc').html(divDetailDesc);
				}
			});
			
			$('ul.imgLibDetailThumbs').html(liHtml);
			$('div.imgLibDetail').imageLibrarySearchDetail(divDetailDesc);
			
			// lightbox
			$(".ASSHLightBoxImage").lightBox({
                	overlayBgColor: '#FFF',
                	overlayOpacity: 0.6,
                	imageLoading: '/design/lightbox-ico-loading.gif',
                	imageBtnClose: '/design/lightbox-btn-close.gif',
                	imageBtnPrev: '/design/lightbox-btn-prev.gif',
                	imageBtnNext: '/design/lightbox-btn-next.gif',
                	containerResizeSpeed: 350,
                	txtImage: 'Right click, "Save Target As" to download image.<br />',
                	txtOf: " of "				
			});
		}
					
	    function repeat(str,num)
	    {
        	return new Array(num + 1).join(str);
	    }
	    
	    function clearDetails()
	    {
		    $('li.imgLibDetailThumb').remove();
		    $('div.imgLibDetailDesc').hide();
	    }
	    
	    function getCaseName(currentIdx)
	    {
   		    var $currentImg = $('li.resultThumb').eq(currentIdx);
			var caseName = $currentImg.attr('casename');
			return caseName;
	    }
	    
	    function setMainImageFocus(currentIdx)
	    {
		    var $currentImg = $('li.resultThumb').eq(currentIdx);
			var currentId = $currentImg.attr('id').split('-')[1];
	    	var imgId = 'img#resultThumbImg-' + currentId;
	    	var liId = 'li#resultThumbImg-' + currentId;
	    	$(liId).addClass('liShadow');
	    	$(imgId).addClass('imgShadow');
	    }
	    
	    function clearMainImageFocus()
	    {
			$('li.imgLibThumb').removeClass('liShadow');
			$('li.imgLibThumb img').removeClass('imgShadow');
	    }
	   
		return this.each(function()
		{
			var $wrapperDiv = $('div.imgLibSearchResultWrapper',this).css('overflow','hidden');
			var	$thumbsUL = $('ul.imgLibSearchResultThumbs');
			var	$items = $('li.resultThumb');
			var	$single = $items.filter('li:first');
			var	singleWidth = $single.outerWidth();
			// note: visibleImgCount doesn't include padding or border
			// current set to display only 3 images
			var	visibleImgCount = Math.floor($wrapperDiv.innerWidth() / singleWidth); 
			var	startShowIndex = 0;
			var	pageCount = Math.ceil($items.length / visibleImgCount);
			var focusIdx = 0; // 0 index is the 1st li empty place holder
			var imgLow = 1; // image 1
			var imgHi = 9; // image 9
			var currentImage = 1;

			$('div.forward-main').text("");
			$('div.back-main').text("");
			$('div.back-main').css("background-position","0px -140px");
			
			// show forward arrow?			
			if ($items.length < 5) { 
				$('div.forward-main').css("background-position","-20px -140px");
				focusIdx--;					
				currentImage--;
			}
			else {
				$('div.forward-main').css("background-position","-20px 0px");								
			}
			
			// paging function
			function gotoPage()
			{
				var visibleCount = 5;
				var stopShowIndex = startShowIndex + visibleCount - 1;
				var imageCount = $items.length;

				// dont go out of range
				if(startShowIndex <= 0) {
					// roll back the indexes
					startShowIndex = 0;
					stopShowIndex = startShowIndex + visibleCount - 1;
					$('div.back-main').css("background-position","0px -140px");					
				}
				else {
					$('div.back-main').css("background-position","0px 0px");				
				}
				
				if(stopShowIndex >= imageCount-1) {				
					$('div.forward-main').css("background-position","-20px -140px");
				}
				else {
					$('div.forward-main').css("background-position","-20px 0px");
				}

				if(stopShowIndex >= imageCount) {
					// roll back indexes					
					startShowIndex = stopShowIndex - visibleCount;
					stopShowIndex = imageCount;					
				}
												
				$(".resultThumb").each(function(index) {
					// move the images
					if(index < startShowIndex || index > stopShowIndex) {
						$(this).hide(300);
					}
					else {
						$(this).show(300);
					}    															
				});											    			
													
				//console.log("startShowIndex="+startShowIndex+", stopShowIndex="+stopShowIndex+", imageCount="+imageCount);
								
				return false;
			}
			// bind to the forward and back buttons
			$('div.back-main').click(function()
			{
				//console.log('a-back-main-click-BEGIN');			
				startShowIndex = startShowIndex - 1;
				return gotoPage(startShowIndex);
			});

			$('div.forward-main').click(function()
			{
				//console.log('forward clicked - startShowIndex='+startShowIndex);
				startShowIndex = startShowIndex + 1;
				return gotoPage(startShowIndex);
			});
			// create a public interface to move to a specific page
			//$(this).bind('goto',function(event,page)
			//{
			//  console.log('goto-BEGIN');
			//	gotoPage(page);
			//});
			
			$('li.resultThumb').click(
			function()
			{
				$("div#imgLibDetail").hide();							
				//console.log('resultThumb-click-BEGIN');
				var currentIdx = $('li.resultThumb').index(this);
				var caseName = getCaseName(currentIdx);
                //console.log('caseName=',caseName);
				LoadDetails(caseName);
				//$('div.imgLibDetail').show();
				//$('div.imgLibDetailWrapper').show();
				//$('div.imgLibDetailWrapper').children().show();
				//$('div.imgLibDetailDesc').show();
				//$('a.forward-detail').show();
				$("div#imgLibDetail").show();
				
			});
		});
	};
	
})(jQuery);

    // form validation for upload
    $(function() {
    	// highlight the text boxes that are required
    	if($("select[id$='ddlCaseList']").val() == "New") {
			var txtCaseName = $("[id$='txtCaseName']");
			if($(txtCaseName).val() == "") {
				$(txtCaseName).css('border-color','red');
				//$(txtCaseName).after("*");
			}
			var txtDiagnosis = $("[id$='txtDiagnosis']");
			if($(txtDiagnosis).val() == "") {
				$(txtDiagnosis).css('border-color','red');
			}
			var txtProcedure = $("[id$='txtProcedure']");
			if($(txtProcedure).val() == "") {
				$(txtProcedure).css('border-color','red');
			}
			var txtAnatRegion= $("[id$='txtAnatRegion']");
			if($(txtAnatRegion).val() == "") {
				$(txtAnatRegion).css('border-color','red');
			}
    	}
    	  
        $("input[id$='btnSubmit']").click(function(event) {         	
        	var alertText = "";
	        // validate and process form here  
			var txtCaseName = $("[id$='txtCaseName']");
			if($(txtCaseName).val() == "") {
				alertText += "Case Name is required.<br />";
				//txtCaseName.focus();
			}
			var txtDiagnosis = $("[id$='txtDiagnosis']");
			if($(txtDiagnosis).val() == "") {
				alertText += "Diagosis is required.<br />";
				//txtDiagnosis.focus();
			}
			var txtProcedure = $("[id$='txtProcedure']");
			if($(txtProcedure).val() == "") {
				alertText += "Procedure is required.<br />";
				//txtProcedure.focus();
			}
			var txtAnatRegion= $("[id$='txtAnatRegion']");
			if($(txtAnatRegion).val() == "") {
				alertText += "Anatomical Region is required.<br />";
				//txtAnatRegion.focus();
			}
			
			if(alertText != "") {
				if($('#alertText').length == 0) {
					$('.formActions').append('<div id="alertText">');
				}
				$('#alertText').html(alertText);
				event.preventDefault();
			}
		});  
    });    
