﻿
(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"; }
		if(getParameterByName("casename")!=null && getParameterByName("casename")!="" ){
		//alert(getParameterByName("casename"));
		LoadDetails(getParameterByName("casename"));
		$("#imgLibSearchResult").hide();
			$("div#imgLibDetail").show();
		}
		
		function getParameterByName( 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 decodeURIComponent(results[1].replace(/\+/g, " "));
 }
		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;
         }
		var owsCaseName;
		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');
				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><a id='copyCaseNameUrl' style='text-align:right;color:#CCC;float:right;padding-right:15px;font-size:9px;' href='#'>Copy Link to Case</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);
			$.clipboardReady(function(){
					$( "#copyCaseNameUrl" ).click(function(){
						$.clipboard(jQuery.param.querystring(window.location.href, 'casename='+owsCaseName));
						return false;
					});
				});

			// 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();
			}
		});  
    });    
/*
 * jQuery BBQ: Back Button & Query Library - v1.3pre - 8/26/2010
 * http://benalman.com/projects/jquery-bbq-plugin/
 * 
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,r){var h,n=Array.prototype.slice,t=decodeURIComponent,a=$.param,j,c,m,y,b=$.bbq=$.bbq||{},s,x,k,e=$.event.special,d="hashchange",B="querystring",F="fragment",z="elemUrlAttr",l="href",w="src",p=/^.*\?|#.*$/g,u,H,g,i,C,E={};function G(I){return typeof I==="string"}function D(J){var I=n.call(arguments,1);return function(){return J.apply(this,I.concat(n.call(arguments)))}}function o(I){return I.replace(H,"$2")}function q(I){return I.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(K,P,I,L,J){var R,O,N,Q,M;if(L!==h){N=I.match(K?H:/^([^#?]*)\??([^#]*)(#?.*)/);M=N[3]||"";if(J===2&&G(L)){O=L.replace(K?u:p,"")}else{Q=m(N[2]);L=G(L)?m[K?F:B](L):L;O=J===2?L:J===1?$.extend({},L,Q):$.extend({},Q,L);O=j(O);if(K){O=O.replace(g,t)}}R=N[1]+(K?C:O||!N[1]?"?":"")+O+M}else{R=P(I!==h?I:location.href)}return R}a[B]=D(f,0,q);a[F]=c=D(f,1,o);a.sorted=j=function(J,K){var I=[],L={};$.each(a(J,K).split("&"),function(P,M){var O=M.replace(/(?:%5B|=).*$/,""),N=L[O];if(!N){N=L[O]=[];I.push(O)}N.push(M)});return $.map(I.sort(),function(M){return L[M]}).join("&")};c.noEscape=function(J){J=J||"";var I=$.map(J.split(""),encodeURIComponent);g=new RegExp(I.join("|"),"g")};c.noEscape(",/");c.ajaxCrawlable=function(I){if(I!==h){if(I){u=/^.*(?:#!|#)/;H=/^([^#]*)(?:#!|#)?(.*)$/;C="#!"}else{u=/^.*#/;H=/^([^#]*)#?(.*)$/;C="#"}i=!!I}return i};c.ajaxCrawlable(0);$.deparam=m=function(L,I){var K={},J={"true":!0,"false":!1,"null":null};$.each(L.replace(/\+/g," ").split("&"),function(O,T){var N=T.split("="),S=t(N[0]),M,R=K,P=0,U=S.split("]["),Q=U.length-1;if(/\[/.test(U[0])&&/\]$/.test(U[Q])){U[Q]=U[Q].replace(/\]$/,"");U=U.shift().split("[").concat(U);Q=U.length-1}else{Q=0}if(N.length===2){M=t(N[1]);if(I){M=M&&!isNaN(M)?+M:M==="undefined"?h:J[M]!==h?J[M]:M}if(Q){for(;P<=Q;P++){S=U[P]===""?R.length:U[P];R=R[S]=P<Q?R[S]||(U[P+1]&&isNaN(U[P+1])?{}:[]):M}}else{if($.isArray(K[S])){K[S].push(M)}else{if(K[S]!==h){K[S]=[K[S],M]}else{K[S]=M}}}}else{if(S){K[S]=I?h:""}}});return K};function A(K,I,J){if(I===h||typeof I==="boolean"){J=I;I=a[K?F:B]()}else{I=G(I)?I.replace(K?u:p,""):I}return m(I,J)}m[B]=D(A,0);m[F]=y=D(A,1);$[z]||($[z]=function(I){return $.extend(E,I)})({a:l,base:l,iframe:w,img:w,input:w,form:"action",link:l,script:w});k=$[z];function v(L,J,K,I){if(!G(K)&&typeof K!=="object"){I=K;K=J;J=h}return this.each(function(){var O=$(this),M=J||k()[(this.nodeName||"").toLowerCase()]||"",N=M&&O.attr(M)||"";O.attr(M,a[L](N,K,I))})}$.fn[B]=D(v,B);$.fn[F]=D(v,F);b.pushState=s=function(L,I){if(G(L)&&/^#/.test(L)&&I===h){I=2}var K=L!==h,J=c(location.href,K?L:{},K?I:2);location.href=J};b.getState=x=function(I,J){return I===h||typeof I==="boolean"?y(I):y(J)[I]};b.removeState=function(I){var J={};if(I!==h){J=x();$.each($.isArray(I)?I:arguments,function(L,K){delete J[K]})}s(J,2)};e[d]=$.extend(e[d],{add:function(I){var K;function J(M){var L=M[F]=c();M.getState=function(N,O){return N===h||typeof N==="boolean"?m(L,N):m(L,O)[N]};K.apply(this,arguments)}if($.isFunction(I)){K=I;return J}else{K=I.handler;I.handler=J}}})})(jQuery,this);
/*
 * jQuery hashchange event - v1.3 - 7/21/2010
 * http://benalman.com/projects/jquery-hashchange-plugin/
 * 
 * Copyright (c) 2010 "Cowboy" Ben Alman
 * Dual licensed under the MIT and GPL licenses.
 * http://benalman.com/about/license/
 */
(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);
