
//
// common functions
//

/**
 * Centers an element inside browser window<p>
 * If element should be centered according to different dimensions (height, width) than its own,
 * a second element can be passed that has the wanted dimensions.
 * @param element
 * @param dimension
 */
function common_centerElement(element, dimension){
    if(dimension == undefined){
        dimension = element;
    }
    var x = $(window).width();
    var y = $(window).height();
    var boxWidth = $(dimension).width();
    var boxHeight = $(dimension).height();
    $(element).css("left", (x/2 - boxWidth/2) + "px");
    $(element).css("top", (y/2 - boxHeight/2) + "px");
}

function common_greyboxShow(href){
    var loading = $("#greybox").find("img")[0];
    var dHeight = $(document).height();
    $("#greybox").height(dHeight);
    $("#greybox").show(200, function(){
        $("#greybox").css("filter", "alpha(opacity=65)"); // fix IE loss of transparency
    });
    $(loading).show();
    $("#greybox-img").attr("src", href);
    common_centerElement(loading);
}

function common_greyboxHide(){
    $("#greybox-content").css("top", "-9999px");
    $("#greybox").hide();
}

/**
 * Changes size of layout so that element dimension will fit
 * and returns actual content width after resize. 
 * @param dimension
 * @return
 */
function common_resizePayoff(dimension){
    $("#wrapper-1").css("width", "auto");
    $("#wrapper-1").css("padding-right", "20px");
    
    var w = $(dimension).width();
    var padding = parse_padding($(dimension).css('padding-left'));
    w += padding;
    if(w < 816) w = 816; // min width
    var s = $("#ad-skyscraper").width();
    if(s <= 0) s=160; // max sky
    //$("#wrapper").width((w + s + 20));
    //$("#wrapper-1").width(w);
    $("#wrapper").css('width',(w + s + 20) + 'px');
    $("#wrapper-1").css('width',w + 'px');
    return w;
}

var common_eopCalls = new Array();

function common_registerEop(func){
    var fcall = func;
    if (typeof func != "function")
        fcall = new Function(func); // does not always work... better to pass function
    
    var index = common_eopCalls.length;
    common_eopCalls[index] = fcall
}

/**
 * Looks for an anchor tag inside current event target object
 * and opens referring location. Also opens new window if
 * anchor specified target="_blank". Does nothing if event
 * origin is anchor tag itself (browser processes it)
 * @param jQEvent jquery event object
 */
function common_triggerLinkInside(jQEvent){
	
    if(jQEvent == null)
        return;
    
    var atags = $(jQEvent.currentTarget).find("a");
    // has atag
    if(atags.length > 0){
        var atag = atags[0];
        
        // check that atag was not in event chain yet (means did not get clicked (directly/indirectly)
        var i = 2; // check only 2 parents, (2 level max exapmle: <a href="foo"><div><img /></div></a>)
        var chainElement = jQEvent.target; // event origin
        var inChain = (chainElement.nodeName.toLowerCase() == 'a'); // direct target
        while(i > 0 && !inChain){
            chainElement = $(chainElement).parent()[0];
            inChain = inChain || chainElement.nodeName.toLowerCase() == 'a';
            i--;
        }
        
        if(atag != null && !inChain){
            if($(atag).attr("target") != "_blank"){
                window.location.href = $(atag).attr("href");
            }else{
                var newWindow = window.open($(atag).attr("href"), "_blank");
                if (newWindow) {
                    if (newWindow.focus) newWindow.focus();
                }
            }
        }
    }
}

function common_changeLocation(selectElement){
	window.location.href = selectElement.options[selectElement.selectedIndex].value;
}

function common_mapInputFields() {

	var common_inputFields = new Object();
	var common_inputFieldsValue = new Object();
	$(".common-input").map(function(index, element){
	    $(element).attr("commonInputFieldId", index);
	    common_inputFields[index] = true;
	    common_inputFieldsValue[index] = $(element).attr("value");
	    $(element).addClass("input-default");
	    
	    $(element).focus(function(){
	        var i = $(this).attr("commonInputFieldId");
	        if(common_inputFields[i]){
	            $(this).attr("value", "");
	        }
	        $(this).removeClass("input-default");
	    });
	    
	    $(element).blur(function(){
	        var i = $(this).attr("commonInputFieldId");
	        if($(this).attr("value") != ""){
	            common_inputFields[i] = false;
	        }else{
	            common_inputFields[i] = true;
	            $(this).attr("value", common_inputFieldsValue[i]);
	            $(this).addClass("input-default");
	        }
	    });
	});
}

function parse_padding(stringPadding) {
	var padding = 0;
	if (stringPadding != null) {
		var index = stringPadding.indexOf("px");
		if (index != -1) {
			padding = stringPadding.substring(0,index);
			padding = parseInt(padding);
		} 
	}
	return padding;
}
