jQuery.fn.ajaxPopup = function(settings) {
	// define defaults and override with options, if available
	// by extending the default settings, we don't modify the argument
	settings = jQuery.extend({
		url: "../ajax/controller.cfm"
	}, settings);	
	
	return this.each(function(){
  	    	   
	    jQuery(this).toggle(function(e){
	    	if(e.target.className != 'resImage'){
		   		var curNode = jQuery(this);
		   		jQuery('#JT').remove();
		   		
		   		idArray = this.id.split('_');	   		
		   		if(idArray[0] == "add"){
			   		var title = "Add Visit";
		   		}else if(idArray[0] == "cls"){
		   			var title = "Maintain Visit";
		   		}else if(idArray[0] == "res"){
		   			var title = "Maintain Assignment";	   			
		   		}else{
		   			var title = "No Action";
		   		}
		   		    		
		   		// Get the Y value of the clicked ID so IE6 doesn't break    		
		   		var yValue = e.clientY;   		
		   		
		   		JT_show(settings.url, this.id, title, idArray,yValue);
		   		jQuery("#JT_close_left").click(function(){jQuery(curNode).click();}); // Close if close image clicked
		   		jQuery("#JT_close_right").click(function(){jQuery(curNode).click();}); // Close if close image clicked	   		
		   		return false;
	    	}else{jQuery(this).click();}
	   	},function(e){
	   		if(e.target.className != 'resImage'){
		   		jQuery('#JT').remove();
	   		}
	   	});
	       
	});
};


/*
 * JTip
 * By Cody Lindley (http://www.codylindley.com)
 * Under an Attribution, Share Alike License
 * JTip is built on top of the very light weight jquery library.
 */


function JT_show(url,linkId,title, idArray,yValue){
	if(title == false)title="&nbsp;";	
	var de = document.documentElement;
	var w = self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
	var hasArea = w - getAbsoluteLeft(linkId);

	if(BrowserDetect.browser == "Explorer" && BrowserDetect.version < 7){
		if(jQuery.browser.msie) { /* IE Hack */
			var yValue = document.body.scrollTop + yValue;
		}else{
			var yValue = window.pageYOffset + yValue;	
		}
		var clickElementy = yValue; //set y position
	}else{
		var clickElementy = getAbsoluteTop(linkId) - 3; //set y position
	}

	var queryString = url.replace(/^[^\?]+\??/,'');
	var params = parseQuery( queryString );
	if(params['width'] === undefined){params['width'] = 300};
	if(params['link'] !== undefined){
		$('#' + linkId).bind('click',function(){window.location = params['link']});
		$('#' + linkId).css('cursor','pointer');
	}
	
	if(hasArea>((params['width']*1)+125)){
		$("body").append("<div id='JT' style='width:"+params['width']*1+"px' class='"+linkId+"'><div id='JT_arrow_left'></div><div id='JT_close_left'>"+title+"</div><div id='JT_copy'><div class='JT_loader'><div></div></div>");//right side
		var arrowOffset = getElementWidth(linkId) + 11;
		var clickElementx = getAbsoluteLeft(linkId) + arrowOffset; //set x position
	}else{
		$("body").append("<div id='JT' style='width:"+params['width']*1+"px' class='"+linkId+"'><div id='JT_arrow_right'></div><div id='JT_close_right'>"+title+"</div><div id='JT_copy'><div class='JT_loader'><div></div></div>");//left side
		var clickElementx = getAbsoluteLeft(linkId) - ((params['width']*1) + 15); //set x position
	}
	
	var urlValues = "";
	if(idArray.length){
		try{
		//idArray[0] -- action
		//idArray[1] -- orderNo
		//idArray[2] -- skillSeq
		//idArray[3] -- dayNo		
		//idArray[4] -- jobDate (mm-dd-yyyy)
		//idArray[5] -- svCode		
		//idArray[6] -- resourceID
		//idArray[7] -- startTime
		//idArray[8] -- endTime
		urlValues = urlValues + "&orderNo=" 		+ idArray[1];
		urlValues = urlValues + "&skillSeq=" 		+ idArray[2];
		urlValues = urlValues + "&dayNo=" 			+ idArray[3];
		urlValues = urlValues + "&jobDate=" 		+ idArray[4];
		//urlValues = urlValues + "&svCode=" 			+ unescape(idArray[5]);
		urlValues = urlValues + "&svCode=" 			+ idArray[5]; // to deal w/ spaces in svCodes
		if(idArray.length >= 7){
			urlValues = urlValues + "&resourceID=" 		+ unescape(idArray[6]);
		}else{
			urlValues = urlValues + "&resourceID=";
		}
		if(idArray.length >= 9){
			urlValues = urlValues + "&sTime=" 		+ escape(idArray[7]);
			urlValues = urlValues + "&eTime=" 		+ escape(idArray[8]);			
		}else{
			urlValues = urlValues + "&sTime=&eTime=";
		}		
		url = url + urlValues;
		}catch(e){}
	}
	
	$('#JT').css({left: clickElementx+"px", top: clickElementy+"px"});
	$('#JT').show();
	$('#JT #JT_copy').load(url);	

}

function getElementWidth(objectId) {
	x = document.getElementById(objectId);
	return x.offsetWidth;
}

function getAbsoluteLeft(objectId) {
	// Get an object left position from the upper left viewport corner
	o = document.getElementById(objectId);
	oLeft = o.offsetLeft;            // Get left position from the parent object
	while(o.offsetParent!=null) {   // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent ;   // Get parent object reference
		oLeft += oParent.offsetLeft; // Add parent left position
		o = oParent;
	}
	return oLeft;
}

function getAbsoluteTop(objectId) {
	// Get an object top position from the upper left viewport corner
	o = document.getElementById(objectId);
	oTop = o.offsetTop;            // Get top position from the parent object
	while(o.offsetParent!=null) { // Parse the parent hierarchy up to the document element
		oParent = o.offsetParent;  // Get parent object reference
		oTop += oParent.offsetTop; // Add parent top position
		o = oParent;
	}
	return oTop;
}

function parseQuery ( query ) {
   var Params = new Object ();
   if ( ! query ) return Params; // return empty object
   var Pairs = query.split(/[;&]/);
   for ( var i = 0; i < Pairs.length; i++ ) {
      var KeyVal = Pairs[i].split('=');
      if ( ! KeyVal || KeyVal.length != 2 ) continue;
      var key = unescape( KeyVal[0] );
      var val = unescape( KeyVal[1] );
      val = val.replace(/\+/g, ' ');
      Params[key] = val;
   }
   return Params;
}

function blockEvents(evt) {
              if(evt.target){
              evt.preventDefault();
              }else{
              evt.returnValue = false;
              }
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();