var loaded = {};//id's of already loaded windows

function loadWindow(url, id, alwaysLoad){    
    //test if the window is already loaded
    if((loaded && !loaded[id]) || alwaysLoad){
        //if not load it
        jQuery.ajax({
            type: "POST",
            url: url,
            success: function(msg){
                jQuery("#"+id).html(msg);
                loaded[id] = true;
            }
        });
    }
    //open popup
    jQuery('#'+id).dialog('open'); return false;
}

var backPopupId = '';

function openPopup(newPopup, closePopup, title){
    if(title){
        $("#" + newPopup + "_Title").html(title);
    }
    
    $('#' + newPopup).dialog('open');
    //if we need to reopen the closed popup save it and than close id
    if(closePopup){
        backPopupId = closePopup;
        $('#' + closePopup).dialog('close');
    }
    return false;
}
function closePopup(popupId){
    $('#' + popupId).dialog('close');
    return false;
}
function backPopup(popupId){
    $('#' + popupId).dialog('close');
    if(backPopupId){
        $('#' + backPopupId).dialog('open');
    }
    return false;
}

function closeWindow(id){
    $('#'+id).dialog('close');
    //setTimeout("positionLabels()", 50);
    return false;
}

/*
 * Submit a form to the specified url
 *
 * @param url - action of the form
 * @param formId - id of the form submited
 */
var formAlreadySubmited = false;
function submitForm(url, formId, redirectUrl) {    
    if(formAlreadySubmited == true)return false;
    formAlreadySubmited = true;
    $.post(url,
        $('#'+ formId).serialize() + '&struts.enableJSONValidation=true&struts.validateOnly=true',
        function(data) {            
            var form =  document.getElementById(formId);
            //clear previous validation errors, if any            
            StrutsUtils.clearValidationErrors(form);

            //get errors from response
            var text = data;
            var errorsObject = StrutsUtils.getValidationErrors(text);

            //show errors, if any
            if(errorsObject.fieldErrors) {
                StrutsUtils.showValidationErrors(form, errorsObject);                
                //after errors are shown redraw labels
                //setTimeout("positionLabels()", 50);
                formAlreadySubmited = false;
            } else {
                //good to go, regular submit
                form.submit();                
            }            
        },
        function(){            
        }
    );
    return false;
}


function positionLabels() {
	$('input').each(function() {
		var	id = $(this).attr('id'),$label = $('label[for='+id+']');
		//hide labels
		if($(this).val() != '') {
			$label.hide();
		}
		//reposition them                
		$label.css({position: "absolute",
                            marginLeft: 0, marginTop: 0,
                            top: $(this).position().top, left: $(this).position.left});
                $label.removeClass('focuslabel');

		$(this).focus(function() {
			$label.addClass('focuslabel');
		});
		$(this).blur(function() {
			$label.removeClass('focuslabel');
		});
		$(this).bind('keydown', function(e) {
			if(e.keyCode >= 48 ) {
				$label.hide();
			}
		});
		$(this).bind('keyup', function() {
			if($(this).val() == '') {
				$label.show();
			}
		});
	});
};



function daysInMonth(element, iMonth, iYear)
{
    var maxday =( 32 - new Date(iYear, iMonth, 32).getDate() );
    if (element.length > 0)
    {
        if(element.length-1==maxday){
            return;
        }else if( (element.length-1) > maxday ){
            for (i = element.length - 1; i>maxday; i--) {
                element.remove(i);
            }
        }else{
            for (i = element.length; i<=maxday; i++) {
                var elOptNew = document.createElement('option');
                elOptNew.text = ''+i;
                elOptNew.value = ''+i;
                try {
                    element.add(elOptNew, null); // standards compliant; doesn't work in IE
                }
                catch(ex) {
                    element.add(elOptNew); // IE only
                }

            }
        }
    }
}


var alreadySubmitedFB = false;
function doFacebookLogin(){
    if(!alreadySubmitedFB){
        alreadySubmitedFB = true;
        FB.Connect.requireSession(function(){facebookLogin_User()});
    }
}


function updateStateList(countryCode, stateId, loaderId){
    var data = {};
    data["countryCode"] = countryCode;
    $("#" + loaderId).slideDown('fast');

    jQuery.ajax({
        type: "POST",
        url: "./StateList.action",
        dataType: "json",
        data: data,
        success: function(resp){
            $("#" + loaderId).slideUp();
            var options = '';
            for (var key in resp.data) {
                options += '<option value="' + key + '">' + resp.data[key] + '</option>';
            }
            if(options == ''){
                options = '<option value="-">Other</option>';
            }
            $("select#" + stateId).html(options);
        }
    });
    return false;
}

function prepareUrl(url){
    url = "" + url;
    url = url.replace('#','');
    if(url.indexOf("?")<0){
        url += "?";
    }
    return url;
}
