function updateDatePullDownMenu(objForm, fieldName) {
  var pdmDays = fieldName + "_days";
  var pdmMonths = fieldName + "_months";
  var pdmYears = fieldName + "_years";

  time = new Date(objForm[pdmYears].options[objForm[pdmYears].selectedIndex].text, objForm[pdmMonths].options[objForm[pdmMonths].selectedIndex].value, 1);

  time = new Date(time - 86400000);

  var selectedDay = objForm[pdmDays].options[objForm[pdmDays].selectedIndex].text;
  var daysInMonth = time.getDate();

  for (var i=0; i<objForm[pdmDays].length; i++) {
    objForm[pdmDays].options[0] = null;
  }

  for (var i=0; i<daysInMonth; i++) {
    objForm[pdmDays].options[i] = new Option(i+1);
  }

  if (selectedDay <= daysInMonth) {
    objForm[pdmDays].options[selectedDay-1].selected = true;
  } else {
    objForm[pdmDays].options[daysInMonth-1].selected = true;
  }
}

function rowOverEffect(object) {
  if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}

function rowOutEffect(object) {
  if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}

function checkBox(object) {
  document.account_newsletter.elements[object].checked = !document.account_newsletter.elements[object].checked;
}

function popupWindow(url, name, params) {
  window.open(url, name, params).focus();
}

function invokeArrayFunctions(arrayFunctions){
	for(i=0; i<arrayFunctions.length; i++){
		fun = arrayFunctions[i];
		fun();
	}
}

var intitializeJS = new Array();
function addInitializeJS(fun){
	intitializeJS.push(fun);
	//invokeInitializeJS();
}
function invokeInitializeJS(){
	invokeArrayFunctions(intitializeJS);
}

var intitializeAJAX = new Array();
function addInitializeAJAX(fun){
	intitializeAJAX.push(fun);
}
function invokeInitializeAJAX(){
	invokeArrayFunctions(intitializeAJAX);
}

var afterAllInitialization = new Array();
function addAfterAllInitialization(fun){
	afterAllInitialization.push(fun);
}
function invokeAfterAllInitialization(){
	invokeArrayFunctions(afterAllInitialization);
}

$(document).ready(
	function(){
		invokeInitializeJS();
		invokeInitializeAJAX();
		invokeAfterAllInitialization();
	}
);

var objectToRecoverState = new Array();

function addObjectIdToRecoverState(id){
	objectToRecoverState.push("#" + id);
}

function prepareObjectRecoverState(){
	var saveState = new Array();
	for(i=0;i<objectToRecoverState.length;i++){
		id = objectToRecoverState[i];
		saveState[id] = new Array();
		saveState[id]['visible'] =  $(id).is(":visible");
	}
	return saveState;
}

function recoverObjectRecoverState(saveState){
	for(id in saveState){
		for(property in saveState[id]){
			value = saveState[id][property];
			if(property == 'visible'){
				if(value){
					$(id).show();
				}else{
					$(id).hide();
				}
			}
		}
	}
}

function invokeAsynRequest(link){
	$.getJSON(link);	
}

function invokeJSONRequest(link, data, func, showProgreesBar){
	/*
	if(data == null){
		data = new Object();
		data.z1 = "Hello";
		data.z2 = 'World';
	}
	*/
	
	if(showProgreesBar == null){
		showProgressBar();
	}
	
	$.getJSON(link, data,
			function(data){
				saveState = prepareObjectRecoverState();
				$.each(data, function(key, value) {
					//alert(key + ': ' + value);
					$('#'+key).html(value); 
				});
				invokeInitializeAJAX();
				recoverObjectRecoverState(saveState);
				if(func != null){
					func();
				}
				hideProgressBar();
			}
	);	
}

function isEmptyModules(id){
	return $("#"+id).is('.emptyModules');
}

function isExist(id){
	return !($('#'+id).length == 0);
}

function visibleHide(id){
	elem = $("#" + id)
	if(elem.is(":visible")){
		elem.hide();
	}else{
		elem.show();
	}
}

function logJS(msg){
	//$("#log").text(msg + "<br>"  + $("#log").text()); 
}

function applyPostCodeMask(fieldId){
	$('#' + fieldId).mask("99-999",{placeholder:"_"});
}

//global $osC_Session;
//$link = HTTP_SERVER.DIR_WS_HTTP_CATALOG.'index2.php?action=shops_offert&'.$osC_Session->getName() . '=' . $osC_Session->getID();
function invokeJSONRequest(link, data, func, showProgreesBar){
	if(data == null){
		data = new Object();
		//data.z1 = "Hello";
		//data.z2 = 'World';
	}

	if(showProgreesBar == null){
		showProgressBar();
	}
	
	$.getJSON(link, data, 
			function(data){
				js = "";
				$.each(data, function(key, value) {
					if(key == 'js_start'){
						eval(value);
					}else if(key == 'js'){
						js = js + value;
					}else{
						$('#'+key).html(value);
					}
				});
				invokeInitializeAJAX();
				eval(js);
				if(func != null){
					func();
				}
				hideProgressBar();
			}
	);	
}

function centerProduct(){
	len = $("#mainContent").width();
	$("ol.productList.newList").css("margin-left" , "" + ((len % 170) / 2) + "px");
}

function checkBrowser(){
	if(!jQuery.browser){
		return true;
	}
	var version = jQuery.browser.version;
	var mainVersion = version.substring(0, 1);
	if(jQuery.browser.msie == true && 
		(mainVersion == 5 || mainVersion == 6 || mainVersion == 7)){
				return false;
	}
	
	return true;
}
