/* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * Name: jContext
 * Version: 1.0 (April 28, 2008)
 * Requires: jQuery 1.2+
 */
(function($) {
	$.fn.showMenu = function(options) {
		var opts = $.extend({}, $.fn.showMenu.defaults, options);
		$(this).bind("contextmenu",function(e){

			opts.before(e);
		
			$(opts.query).show().css({
				top:e.pageY+"px",
				left:e.pageX+"px",
				position:"absolute",
				opacity: opts.opacity,
				zIndex: opts.zindex
			});
			return false;
		});
		$(document).bind("click",function(e){
			$(opts.query).hide();
		});
	};
	
	$.fn.showMenu.defaults = {
		zindex: 2000,
		query: document,
		opacity: 1.0,
		before: function(){}
	};
})(jQuery);



function contextMenu() {
	//Links
	
	$(".orderOverview tr.orderline.normal td").showMenu({
		query: "#orderMenu",
		zindex: 2000,
		before: function(e){
		
			$(".jobMenu").hide();
			$("#orderMenuQuote").hide();
		
			if (e.target.tagName == "A") {
				var ref = e.target;
			} else if (e.target.tagName == "TD") {				
				var ref = $("#" + e.target.id + " > a").attr("href");
			} else if (e.target.tagName == "IMG") {
				var ref = $("#" + $(e.target).parent().parent().get(0).id + " > .orderid > a").attr("href");				
			} else if (e.target.tagName == "SPAN") {
				var ref = $("#" + $(e.target).parent().parent().parent().get(0).id + " > .orderid > a").attr("href");
			} else {
				var ref = e.target;
			}
			
			var id = getUrlParameter(ref,'id');
			
			$("#orderMenu li").each(function(){
				var elemid = this.id;			
				if (elemid == "deleteOrder") {					
					$("#orderMenu #" + elemid + " a").click(function(){
						generateDialog({'dialogid':'delete_areyousure','formid':'order_properties_form','id':id});
					});					
				} else {
					var url = $("#orderMenu #" + elemid + " a").attr("href");
	
					url = replaceUrlParameter(url,'id',id);
					$("#orderMenu #" + elemid + " a").attr("href" , url);
				}
			})
		}
	});	
	
	$(".orderOverview tr.orderline.quote td").showMenu({
		query: "#orderMenuQuote",
		zindex: 2000,
		before: function(e){
		
		$(".jobMenu").hide();
		$("#orderMenu").hide();
		
		if (e.target.tagName == "A") {
			var ref = e.target;
		} else if (e.target.tagName == "TD") {				
			var ref = $("#" + e.target.id + " > a").attr("href");
		} else if (e.target.tagName == "IMG") {
			var ref = $("#" + $(e.target).parent().parent().get(0).id + " > .orderid > a").attr("href");				
		} else if (e.target.tagName == "SPAN") {
			var ref = $("#" + $(e.target).parent().parent().parent().get(0).id + " > .orderid > a").attr("href");
		} else {
			var ref = e.target;
		}
		
		var id = getUrlParameter(ref,'id');
		
		$("#orderMenuQuote li").each(function(){
			var elemid = this.id;			
			if (elemid == "deleteOrder") {					
				$("#orderMenuQuote #" + elemid + " a").click(function(){
					generateDialog({'dialogid':'delete_areyousure','formid':'order_properties_form','id':id});
				});					
			} else {
				var url = $("#orderMenuQuote #" + elemid + " a").attr("href");
				
				url = replaceUrlParameter(url,'id',id);
				$("#orderMenuQuote #" + elemid + " a").attr("href" , url);
			}
		})
	}
	});	
	
	$(".jobOverview tr.jobline td").showMenu({
		query: ".jobMenu",
		zindex: 2000,
		before: function(e){
			
			$("#orderMenu").hide();
			$("#orderMenuQuote").hide();
		
			if (e.target.tagName == "A") {
				var ref = e.target;
			} else if (e.target.tagName == "TD") {				
				var ref = $("#" + e.target.id + " > a").attr("href");
			} else if (e.target.tagName == "SPAN") {
				var ref = $(e.target).parent().attr('href');
			} else {
				var ref = e.target;
			}

			var id = getUrlParameter(ref,'id');
			var engine = getUrlParameter(ref,'engine');
			$(".jobMenu").hide();
			$(".jobMenu").removeClass("jobMenu");
			$("#" + engine + "JobMenu").addClass("jobMenu");
									
			$("#" + engine + "JobMenu li").each(function(){
				var elemid = this.id;
				if (elemid == "reorder") {
					$("#" + engine + "JobMenu #" + elemid + " a").click(function(){
						generateDialog({'dialogid':'busy','message':'cConvertingPleaseWait'});ordermanagerCompletedOverviewForm.action='site.php?formid=job_properties_form&action=reorder&id=' + id;setTimeout('ordermanagerCompletedOverviewForm.submit();', 500);
					});					
				} else {
					var url = $("#" + engine + "JobMenu #" + elemid + " a").attr("href");
					url = replaceUrlParameter(url,'id',id);
					$("#" + engine + "JobMenu #" + elemid + " a").attr("href" , url);
				}
			})
			if (engine == "spdf") {
				var templateid = getUrlParameter(ref,'templateid');
				var url = $("#spdfJobMenu #viewSoftproof a").attr("href");

				url = replaceUrlParameter(url,'id',templateid);
				$("#spdfJobMenu #viewSoftproof a").attr("href" , url);
			}
		}
	});
}


function getUrlParameter(url,param)
{
	var regexSearch = "[\\?&]"+param+"=([^&#]*)";
	var regex = new RegExp( regexSearch );
	var results = regex.exec( url );
	if( results == null )
		return "";
	else
		return results[1];
}


function replaceUrlParameter(url,param,value) {
    var regex = new RegExp("([?|&])" + param + "=.*?(&|\'|$)","i");
    if (url.match(regex))
        return url.replace(regex,'$1' + param + "=" + value + '$2');
    else
        return url + '&' + param + "=" + value;
}