var cancelStateMessage;
var cancelQuestion;
var cancelBasketQuestion;
var cancelWait;
var cancelProblem;
var connectToCancelMessage;

var editStateMessage;
var unEditStateMessage;
var editProblem;
var editWait;
var editColor = '#F4A464';
var editionDelayExpiredMessage;


var cancelStateMessage;
var cancelEditProblem;
var cancelEditWait;
var cancelColor = '#E47770';

var cancelTitle;
var waitTitle;
var problemTitle;
var editionDelayExpiredTitle;

var buttonCancel;
var buttonNoCancel;
var buttonAddProducts;
var buttonNoAddProducts;

var cancelUrlPrefix;
var editUrlPrefix;

var orderParameterName = "&orderNumber=";
var addProductParamaterName = "&addProducts=";
var orderNumber;
var addProducts;

var greenButtonClasses = new Array('green', 'greenActive', 'greenActive');
var orangeButtonClasses = new Array('orange', 'orangeActive', 'orangeActive');
var redButtonClasses = new Array('red', 'redActive', 'redActive');

var cancelFirstDialogButtons = new Object;
var cancelSecondDialogButtons = new Object;
var okButton = new Object;
okButton['OK'] = function() {
	$(this).dialog('close');
};
var closeFunc = function() {$(this).dialog('close');};

var editSuccessFunction;
var cancelSuccessFunction;

var viewportStart;

var cancelLabelBtn;
var okLabelBtn;
var confirmLabelBtn;

var warningTxtSwitchProductsUnavailable;
var selectSatellitePopupTitle;
var selectSatellitePopupSubtitle;
var selectSatellitePopupSatelliteId;

// JS var for select satellite dialog box 
var	dialogBoxSelectSatellite;

/*
 *  ###Initialization Example
	$(function() {
		setHtmlDialogBox("My title", "Dialog box content", 1);
		dialogBox.dialog('open');
	}); 
 * 
 */

var dialogBox, noMoreBrowserBox, iframeDialogBox,iframeDialogBox2;
var dialogBoxHtml =
	'<div id="dialogBox" title="Dialog box">' + 
	'	<p>' + 
	//'	<span class="ui-icon ui-icon-info" style="float:left; margin:0 7px 20px 0;" id="dialogIcon">' + 
	//'	</span>' + 
	'	<span id="dialogMessage">' + 
	'	</span>' + 
	'	</p>' + 
	'</div>';
	
var defaultDialogBox = 
	{
		autoOpen: false,
		closeOnEscape : false,
		bgiframe: true,
		resizable: false,
		draggable: false,
		height: 200,
		width: 400,
		modal: true,
		overlay: {
			backgroundColor: '#000',
			opacity: 0.5
		},
		buttons: cancelFirstDialogButtons
	};
function initDialogBox () {
	if (!dialogBox) {
		$('body').append(dialogBoxHtml);
		dialogBox = $('#dialogBox');
		return true;
	};
	return false;
}
	
function setCancelFirstDialogBox (message) {
	if (initDialogBox()) {
		$('#dialogBox').dialog(defaultDialogBox);
	}
	setDialogBoxTitle (cancelTitle);
	setDefaults();
	dialogBox.dialog('option', 'buttons', cancelFirstDialogButtons);
	changeButtonClass(0, redButtonClasses);
	changeButtonClass(1, greenButtonClasses);
	$('#dialogMessage').html(message);
	$('#dialogIcon').removeClass();
	$('#dialogIcon').addClass('ui-icon ui-icon-info');
	dialogBox.dialog('open');
}
function setWaitDialogBox(message) {
	if (initDialogBox()) {
		$('#dialogBox').dialog(defaultDialogBox);
	}
	$('#dialogBox').dialog('option', 'autoOpen', true);
	setDialogBoxTitle(waitTitle);
	setClosingCross($('#dialogBox'), false);
	$('#dialogMessage').html(message);
	$('#dialogBox').removeClass('ui-dialog-content');
	$('#dialogBox').addClass('ui-dialog-waitWheel');
	$('#dialogBox').dialog('option', 'buttons', null);		
}
function setProblemDialogBox(message) {
	if (initDialogBox()) {
	}
	setDialogBoxTitle (problemTitle);
	setDefaults();
	dialogBox.dialog('option', 'buttons', okButton);
	changeButtonClass(0, greenButtonClasses);
	$('#dialogMessage').html(message);
	$('#dialogIcon').removeClass();
	$('#dialogIcon').addClass('ui-icon ui-icon-alert');
}
function setHtmlDialogBox(title, message, ok) {
	if (initDialogBox()) {
		$('#dialogBox').dialog(defaultDialogBox);
	}
	setDialogBoxTitle (title);
	$("#dialogBox").dialog('option', 'width', 600);
	$("#dialogBox").dialog('option', 'height', 300);
	setDefaults();
	if (ok) {
		$("#dialogBox").dialog('option', 'buttons', okButton);
		changeButtonClass(0, greenButtonClasses);
	}
	$('#dialogMessage').html(message);
	$('#dialogIcon').removeClass();		
}

function setHtmlDialogBoxWithNoButtons(title, message, boxWidth, boxHeight) {
	if (initDialogBox()) {
		$('#dialogBox').dialog(defaultDialogBox);
	}
	setDialogBoxTitle (title);
	$("#dialogBox").dialog('option', 'width', boxWidth);
	$("#dialogBox").dialog('option', 'height', boxHeight);
	setDefaults();
	$("#dialogBox").dialog("option",'buttons',null);
	$('#dialogMessage').html(message);
	$('#dialogIcon').removeClass();		
}




function setHtmlDialogBoxWithOKAndCancelButtons(title, message, okFunction,cancelFunction, boxWidth, boxHeight) {
	if (initDialogBox()) {
		$('#dialogBox').dialog(defaultDialogBox);
	}
	setDialogBoxTitle (title);
	$("#dialogBox").dialog('option', 'width', boxWidth);
	$("#dialogBox").dialog('option', 'height', boxHeight);
	setDefaults();

	var customButtons = {};
	customButtons[okLabelBtn] = okFunction;
	customButtons[cancelLabelBtn] = cancelFunction;
	$("#dialogBox").dialog('option', 'buttons', customButtons);
	changeButtonClass(0, greenButtonClasses);
	changeButtonClass(1, redButtonClasses);
	
	$('#dialogMessage').html(message);
	$('#dialogIcon').removeClass();		
}

function setNoBorderDialogBox (title, boxId, boxWidth, boxHeight, closingCross, hide) {
	var noBorderDialogBox = $('#' + boxId);
	noBorderDialogBox.dialog(defaultDialogBox);
	noBorderDialogBox.dialog({
		dialogClass: 'noBorderDialogBox',
		width: boxWidth,
		height: boxHeight
	});
	noBorderDialogBox.dialog('option', 'title', title);
	noBorderDialogBox.dialog('option', 'buttons', false);
	setClosingCross(noBorderDialogBox, closingCross);

	if (!hide) {
		noBorderDialogBox.dialog('open');		
	}
	return noBorderDialogBox;
}

function setIframeDialogBox (someSrc, boxId, boxWidth, boxHeight, closingCross, close) {
	if (!iframeDialogBox) {
		iframeDialogBox = $('#' + boxId);
		iframeDialogBox.dialog(defaultDialogBox);
		iframeDialogBox.dialog('option', 'title', false);
		iframeDialogBox.dialog('option', 'buttons', false);
		setClosingCross(iframeDialogBox, closingCross);		
	}
	iframeDialogBox.dialog({
		dialogClass: 'iframeBox',
		width: boxWidth,
		height: boxHeight
	});
	// CKR: setting src temporized because it was sometimes not displaying in ff 3
	window.setTimeout(function() {
		iframeDialogBox.children('iframe').attr('src',someSrc);
	}, 200);
	if (close) {
		iframeDialogBox.dialog('option', 'close', close);
		$('.ui-widget-overlay').click(function(event) {
			iframeDialogBox.dialog('close');
			close.call(this, event);
		});
	}
	
	return iframeDialogBox;
}


function iframeDialogBox2Init(title, boxId, boxWidth, boxHeight, closingCross, close) {
	//writeInConsole("iframeDialogBox2Init");
	
	if (!iframeDialogBox2) {
		iframeDialogBox2 = $('#' + boxId);
		iframeDialogBox2.dialog(defaultDialogBox);
		iframeDialogBox2.dialog({'title': title});
		setClosingCross(iframeDialogBox2, closingCross);		

	}
	
	
	iframeDialogBox2.dialog({
		dialogClass: 'iframeBox2',
		width: boxWidth,
		height: boxHeight
	});
	
	$('#ui-dialog-title-'+boxId).width(boxWidth - 4);
	$('#'+boxId+'Frame',iframeDialogBox2).height(boxHeight - 80);
	

	
	
	if (close) {
		iframeDialogBox2.dialog('option', 'close', close);
		$('.ui-widget-overlay').click(function(event) {
			iframeDialogBox2.dialog('close');
			close.call(this, event);
		});
	}
	
	$('.'+boxId+' .ui-dialog-buttonpane').addClass('ui-corner-all');

	$('#'+boxId+'Frame',iframeDialogBox2).attr('src','about:blank');
	
	$(getIFrameDocument(document.getElementById(boxId+'Frame'))).ready(function() {
		//writeInConsole("iframe is ready!");
		
		iframeDialogBox2.dialog('open');
	});
	

}

function iframeDialogBox2Load(boxId,someSrc) {

	
	
	//writeInConsole("iframeDialogBox2Load : "+' '+someSrc);
	
	
	$('#'+boxId+'Frame',iframeDialogBox2).attr('src',someSrc);

}


function setIframeDialogBox2WithOKAndCancelButtons (someSrc,title, boxId, boxWidth, boxHeight, closingCross, close, okFunction,cancelFunction) {
	iframeDialogBox2Init(title, boxId, boxWidth, boxHeight, closingCross, close);
	
	var customButtons = {};
	customButtons[okLabelBtn] = okFunction;
	customButtons[cancelLabelBtn] = cancelFunction;
	$('#'+boxId).dialog('option', 'buttons', customButtons);
	changeButtonClass(0, greenButtonClasses);
	changeButtonClass(1, redButtonClasses);

	iframeDialogBox2Load(boxId,someSrc);
	
	return iframeDialogBox2;
}

function setIframeDialogBox2WithOKButton (someSrc,title, boxId, boxWidth, boxHeight, closingCross, close, okFunction) {
	iframeDialogBox2Init(title, boxId, boxWidth, boxHeight, closingCross, close);
	
	var customButtons = {};
	customButtons[okLabelBtn] = okFunction;
	$('#'+boxId).dialog('option', 'buttons', customButtons);
	changeButtonClass(0, greenButtonClasses);

	iframeDialogBox2Load(boxId,someSrc);
	
	return iframeDialogBox2;
}


function setIframeDialogBox2WithConfirmAndCancelButtons (someSrc,title, boxId, boxWidth, boxHeight, closingCross, close, confirmFunction,cancelFunction) {
	iframeDialogBox2Init(title, boxId, boxWidth, boxHeight, closingCross, close);
	
	var customButtons = {};
	customButtons[confirmLabelBtn] = confirmFunction;
	customButtons[cancelLabelBtn] = cancelFunction;
	$('#'+boxId).dialog('option', 'buttons', customButtons);
	changeButtonClass(0, greenButtonClasses);
	changeButtonClass(1, redButtonClasses);
	
	iframeDialogBox2Load(boxId,someSrc);
	
	return iframeDialogBox2;
}

function setIframeDialogBox2WithNoButtons (someSrc,title, boxId, boxWidth, boxHeight, closingCross, close) {
	iframeDialogBox2Init(title, boxId, boxWidth, boxHeight, closingCross, close);
	
	var customButtons = {};
	$('#'+boxId).dialog('option', 'buttons', customButtons);
	
	iframeDialogBox2Load(boxId,someSrc);
	
	return iframeDialogBox2;
}


function setOldBrowserDialogBox(title, cookiePath, cookieName, closingCross) {
	var noMoreBrowserBox = 
		setNoBorderDialogBox (title, 'noMoreBrowserBox', 720, 460, closingCross);
	noMoreBrowserBox.bind("dialogclose", function(event, ui) {
		$.cookie(cookieName, "true", { path: cookiePath});
	});
}

function setNewsletterDialogBox(title, closingCross) {
	var newsletterBox = 
		setNoBorderDialogBox (title, 'newsletterBox', 680, 260, closingCross);
	return newsletterBox;
}

function setMessageBox(context, message, silent, params) {
	var dim = { width: message.width ? message.width: 805, height: message.height ? message.height : 540 };
	var divid = message.boxid ? message.boxid : 'iframeBox';
	var newurl = message.url;
	if (params && params.urlParams) {
		newurl = addUrlVars(newurl, params.urlParams);
	}
	
	var box = 
		setIframeDialogBox (newurl, divid, dim.width, dim.height, message.closingCross === false ? false : true);
	if (message.className) {
		box.addClass(message.className);
	}
	
	// if box was displayed and displayOnce is true, don't display again
	if (box.dialog('option', 'displayed') === true) {
		return box;
	}
	box.dialog('open');
	box.dialog('option', 'close', silent ? $.noop : closeMessageBox);
	box.dialog('option', 'context', context);
	setParams(box, message);

	if (box.dialog('option', 'fullscreen') === true) {
		setFullscreen(box);
	} else {
		box.dialog(dim);
	}
	box.dialog('option', 'position', 'center');
	
	return box;
}
function setParams(box, message) {
	for (var param in message) {
		box.dialog('option', param, message[param]);
	}	
}
function setFullscreen(box) {
	box.dialog({
		width: $(window).width() - 30,
		height: $(window).height() - 30
	});	
}
function setIPhoneWarningBox(context, message, silent) {
	changeViewport(400);
	$('#mainContent').hide();
	$('#basket').hide();
	$('#navLeft').hide();
	if (!dialogBox) {
		dialogBox = $('#iphoneRecommander');
		dialogBox.dialog(defaultDialogBox);
	}
	setParams(dialogBox, message);
	dialogBox.dialog('option', 'context', context);
	dialogBox.dialog('option', 'close', silent ? $.noop : closeIPhoneWarningBox);
	setClosingCross(dialogBox, false);
	//dialogBox.dialog('option', 'buttons', okButton);
	changeButtonClass(0, greenButtonClasses);
	setFullscreen(dialogBox);
	dialogBox.dialog('option', 'position', 'center');
	dialogBox.dialog('open');
	return dialogBox;
}
function closeIPhoneWarningBox(event) {
	var boxId = $(event.target).attr('id');
	var box = $("#" + boxId);
	restoreViewport();
	$('#mainContent').show();
	$('#navLeft').show();
	$('#basket').show();
	
	if ($('#iphoneRecommanderCheckBox:checked').length == 0) {
		box.dialog('option', 'silent', true);
	}
	
	closeMessageBox(event);
}
function set3DSecureWarningBox(context, message, silent) {
	var box = setMessageBox(context, message, silent);
	box.dialog('option', 'close', silent ? $.noop : close3DSecureWarningBox);
}
function close3DSecureWarningBox(event) {
	closeMessageBox(event);
	//$('#formPmtMethod').submit();
}
function setNewComSiteBox(context, message, silent, params) {
	$('#mainContent').hide();
	var dim = { width: message.width ? message.width: 805, height: message.height ? message.height : 540 };
	var divid = message.boxid ? message.boxid : 'iframeBox';
	var newurl = message.url;
	if (params && params.urlParams) {
		newurl = addUrlVars(newurl, params.urlParams);
	}
	
	var box = 
		setIframeDialogBox (newurl, divid, dim.width, dim.height, message.closingCross === false ? false : true);
	if (message.className) {
		box.addClass(message.className);
	}
	
	// if box was displayed and displayOnce is true, don't display again
	if (box.dialog('option', 'displayed') === true) {
		return box;
	}
	box.dialog('open');
	box.dialog('option', 'context', context);
	box.dialog('option', 'close', silent ? $.noop : closeNewComBox);
	box.dialog('option', 'context', context);
	setParams(box, message);

	if (box.dialog('option', 'fullscreen') === true) {
		setFullscreen(box);
	} else {
		box.dialog(dim);
	}
	box.dialog('option', 'position', 'center');
	
	return box;
}
function closeNewComBox(event) {
	var boxId = $(event.target).attr('id');
	var box = $("#" + boxId);
	$('#mainContent').show();
	closeMessageBox(event);
}
function closeMessageBox(event) {
	var boxId = $(event.target).attr('id');
	var box = $("#" + boxId);
	var silent = box.dialog('option', 'silent');
	// set displayed in cookies to avoid display twice in same session
	setDisplayed(box);
	box.dialog('option', 'displayed', true);
	
	if (silent !== true) {
		var context = box.dialog('option', 'context');
		var messageKey = box.dialog('option', 'messageKey');
		if (context != box && messageKey != box) {
			var params = {};
			params['context'] = context;
			params['messageKey'] = messageKey;
			params['action'] = 'closeMessage';
			$.post("/leshop/generalAction.do",
				params,
				function(data) { 				
				},
				"json"
			);
		}			
	}
	box.dialog('option', 'silent', null);
}
function closeBox(boxId, silent) {
	var box = $('#' + boxId);
	if (silent) {
		box.dialog('option', 'silent', true);	
	}
	box.dialog('close');				
}

// put in cookies to avoid displaying in same session
function setDisplayed(box) {
	var messageKey = box.dialog('option', 'messageKey');
	if (messageKey != box) {
		var ck = $.cookie('displayedInSession');
		if (ck == null) {
			ck = {json: true};	
		} else {
			ck = $.evalJSON(ck);
			if (ck.json !== true) {
				ck = {json: true};
			}
		}
		ck[messageKey] = true;
		$.cookie('displayedInSession', $.toJSON(ck));
	}
}

function setExistingCommandDialogBox(title) {
	initDialogBox();
	dialogBox.dialog(defaultDialogBox);
	// Because IE was developped by @#ç%& and must be prohibited,
	// we lost time and we added this test. Hope that the computing God
	// will listen to me and make a person with sens to implement
	// Mozilla navigation engine into IE or make IE disappear!!!!
	// MCA 29.01.2010
	if (navigator.userAgent.toLowerCase().indexOf("msie") == -1) {
		dialogBox.dialog('option', 'height', 255);
	}
	dialogBox.dialog('option', 'width', 500);
	dialogBox.dialog('open');
	setDialogBoxTitle(title);
	$("#newOrder").click(function () {
		dialogBox.dialog('close');
	});
	$("a[id^='edit']").click(function(){
		setWaitDialogBox(editWait);
		orderNumber = $(this).attr("id").replace('edit_', '');
		editOrder();
	});	
}
function setTimeExpiredDialogBox () {
	setHtmlDialogBox(editionDelayExpiredTitle, editionDelayExpiredMessage, true);
	setClosingCross(dialogBox, false);
	editOrder(dialogBox);
	dialogBox.dialog('open');
}
function setDialogBoxTitle(title) {
	$('#dialogBox').dialog({'title': title});
}
function setDefaults() {
	//$('#dialogBox').dialog({ position: 'center' });
	$('#dialogBox').removeClass('ui-dialog-waitWheel');
	$('#dialogBox').addClass('ui-dialog-content');
	$('#dialogBox').dialog('option', 'position', 'center');
	setClosingCross($('#dialogBox'), true);
}

function setClosingCross(box, visible) {
	var closeBox = $(box).parent().find(('a.ui-dialog-titlebar-close'));
	if (visible) {
		closeBox.show();
	} else {
		closeBox.hide();
	}
}

function editOrder () {
	$.ajax({
		type: "POST",
		url: editUrlPrefix,
		data: orderParameterName + orderNumber,
		dataType: "json",
		success: editSuccessFunction,
		error: function(data) {
			setProblemDialogBox(editProblem);
			dialogBox.dialog('open');
		},
		complete: function (data) {
		}
	});
}
function cancelOrder () {
	setWaitDialogBox(cancelWait);
	$.ajax({
		type: "POST",
		url: cancelUrlPrefix,
		data: orderParameterName + orderNumber + addProductParamaterName + addProducts,
		dataType: "json",
		success: cancelSuccessFunction,
		error: function(data) {
			setProblemDialogBox(cancelProblem);
			dialogBox.dialog('open');
		},
		complete: function (data) {
		}
	});
}

function highlightElement(element, p_color, message) {
	if (element.effect) {
		element.effect( 'highlight', {color: p_color}, 2000);		
	}
	if (message != null) {
		element.html(message);
	}
}
function changeButtonClass(buttonIndex, classes) {
	var selector = 'div[class^=ui-dialog-buttonpane] :button';
	var buttonConcerned;
	var btns = $(selector);
	if (buttonIndex >= 0) {
		buttonIndex++;
		buttonConcerned = $(selector + ':nth-child(' + buttonIndex + ')');
	} else {
		return;
	}
	buttonConcerned.removeClass();
	buttonConcerned.addClass(classes[0]);
	buttonConcerned.
	hover(function() {
			$(this)
			.removeClass()
			.addClass(
			classes[1])
		},function() {
			$(this)
			.removeClass()
			.addClass(
			classes[0])
	})
	.focus(function() {
			$(this)
			.removeClass()
			.addClass(
			classes[2])
		})
	.blur(function() {
			$(this)
			.removeClass()
			.addClass(
			classes[0])
		});
}

function getUrlVars(location)
{
	var url = location ? location.href : window.location.href;
    var vars = [], hash;
    var hashes = url.slice(url.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        var value = hash[1];
        if (value !== undefined && value !== null) {
        	if (value.toLowerCase() === "true") {
        		value = true;
        	} else if (value.toLowerCase() === "false") {
        		value = false;
        	}
        }
        vars[hash[0]] = value;
    }
    return vars;
}

function addUrlVars(loc, urlParams) {
	if (!urlParams) {
		return loc;
	}
	var newurl = loc;
	
	for (var key in urlParams) {
		newurl += "&" + key + "=" + urlParams[key];			
	}
	
	newurl = newurl.replace('?&', '?');
	
	return newurl;
}

function changeViewport(Hsize) {
	if (!viewportStart) {
		viewportStart = document.getElementById("viewport").getAttribute('content');		
	}
	switch(arguments.length) {
	case 1:
		document.getElementById("viewport").setAttribute('content','width='+Hsize);
		break;
	case 2:
		document.getElementById("viewport").setAttribute('content','width='+arguments[0]+', height='+arguments[1]);
		break;
	}
}
function restoreViewport() {
	document.getElementById("viewport").setAttribute('content',viewportStart);
}

var errorBox;
function openErrorBox(title) {
	if (errorBox != undefined) {
		errorBox.dialog('destroy');
	}
	errorBox = setErrorBox(title, true);
	setTimeout('resizeOverlay()', 1000);
	setTimeout('increaseOverlay()', 1010);
}

function resizeOverlay() {
	$.ui.dialog.overlay.resize();
}

function increaseOverlay() {
	$(document).unbind($.ui.dialog.overlay.mousedown);
	var newOverH = $('.ui-widget-overlay').height() + 15;
	$('.ui-widget-overlay').css('height',newOverH+'px');
}

function setErrorBox(title, closingCross) {
	var boxWidth = 503;
	var paymentErrorBox = setNoBorderDialogBox (title, 'paymentErrorBox', boxWidth, 'auto', closingCross);
	paymentErrorBox.dialog({dialogClass: 'lsDialogBox'});
	$('.ui-dialog.lsDialogBox').css('top','70px');
	$('#ui-dialog-title-paymentErrorBox').width(boxWidth - 4);
	return paymentErrorBox;
}
