/**
 * Page loads banners into the 'banners' array and
 *      defines functions needed for rollbanners
 *
 * You must define section_id before referencing this script!
 *
 * ratko@kramfid.org, 12.4.2005
 */

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// global variables
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

// banner array
//  0: position name
//  1: position id from the 24ur.banner_location table
//  2: <DIV> id, where banner is included
//  3: banner invocation code (function banners_get fills this property)
//  4: banner type: 0: normal, 1: floater, 2: popup, 3: text, 4:normal, but do not document.write banner

if ( show_banners===undefined )
	var show_banners="";

banners = new Array(
                new Array("A" ,30 , "banner_A", "", 0),
                new Array("A1",31 , "banner_A", "", 0),
                new Array("B" ,32 , "banner_B", "", 0),
                new Array("E" ,33 , "banner_E", "", 0),
                new Array("E1",34 , "banner_E", "", 0),
                new Array("F" ,35 , "banner_F", "", 0),
                new Array("G" ,36 , "banner_G", "", 0),
                new Array("H" ,37 , "banner_H", "", 0),
                new Array("PIXEL"   ,39 , "banner_PIXEL"  , "", 0),
                new Array("VIDEO_IMG"   ,40 , "banner_VIDEO_IMG"  , "", 4),
                new Array("VIDEO_VID"   ,41 , "banner_VIDEO_VID"  , "", 3)
                );

// rollbanner_check has reference to a rollbanner DIV that needs to be closed when mouse leaves orig banner
var rollbanner_check = false;

// rollbanner is an array filled with data needed to display rollbanner. MAX creates
//      this array and writes it into append HTML property of original banner
var rollbanner = false;

// connect_zone and connect_banner are used to connect two banners:
// if some banner exports these two variables, then only banner 1234 will be shown in zone
//      136). Banenr that exports these two variables _must_ be shown before zone 136.
var connect_zone = false;
var connect_banner = false;

// through this variable rollbanner knows who is his parent. Every DIV must fill this variable with DIV-s id
var current_div = "";

// this variable holds functions that are executed when banner calls praHide
var praHide_functions = false;

/**
 * Function returns banner array and creates invocation code for every banner
 * @param int section_id Current page section_id
 */
function banners_get(section_id) {

        if ((!section_id) || (section_id=='undefined')) return false;
        section_id = parseInt(section_id);
        if (isNaN(section_id)) return false;

        for (i=0; i<banners.length; i++) {
                zoneid = section_id * 100 + banners[i][1];
                banners[i][3] = banner_get(zoneid, banners[i][4] );
        }

        return banners;
}

/**
 * Function creates invocation code for one banner
 * This code is copied from MAX-s invocation code generator,
 *
 * @param string zoneid Tells what zone to display
 * @param int banner_type 0: normal, 1: floater, 2: popup (slightly different invocation codes)
 */
function banner_get(zoneid, banner_type) {

        var code = '';
	if(show_banners == "0")
		return "";
        switch (banner_type) {
                case 0: // normal banner
                        code = banner_get_normal(zoneid);
                        break;
                case 1: // flyer
                        code = banner_get_floater(zoneid);
                        break;
                case 2: // popup
                        code = banner_get_popup(zoneid);
                        break;
                case 3: // text banner
                        code = banner_get_text(zoneid);
                        break;
                case 4: // normal banner, but do not document.write banner, leave it in variable only
                        code = banner_get_normal_variable(zoneid);
                        break;

        }
        return code;
}

/**
 * Function returns JS for normal banner
 */
function banner_get_normal(zoneid) {

        var awrz_rnd = Math.floor(Math.random()*99999999999);

        if (!document.phpAds_used) document.phpAds_used = ',';
        var awrz_protocol = location.protocol.indexOf('https')>-1?'https:':'http:';

        banner  = "<" + "script language='JavaScript' type='text/javascript' src='";
        banner += awrz_protocol+"//adserver.24ur.com/adjs.php?n=" + zoneid;
        banner += "&zoneid=" + zoneid + "&target=_blank";
        banner += "&exclude=" + document.phpAds_used;
        banner += "&loc=" + escape(window.location);
        if (document.referrer)
                banner += "&referer=" + escape(document.referrer);
        banner += '&r=' + awrz_rnd;
        banner += "&ct0=" + escape(document.phpAds_ct0);

        // is this zone connected?
        connected_banner = banner_zone_is_connected(zoneid);
        if ( connected_banner )
                banner += "&bannerid=" + connected_banner;

        banner += "'><" + "/script>\n";

        return banner;
}


/**
 * Function returns JS for normal banner. JS does not document.write this banner, it is left only in 'phpadsbanner' variable.
 */
function banner_get_normal_variable(zoneid) {

        var awrz_rnd = Math.floor(Math.random()*99999999999);

        if (!document.phpAds_used) document.phpAds_used = ',';
        var awrz_protocol = location.protocol.indexOf('https')>-1?'https:':'http:';

        banner  = "<" + "script language='JavaScript' type='text/javascript' src='";
        banner += awrz_protocol+"//adserver.24ur.com/adjs_var.php?n=" + zoneid;
        banner += "&zoneid=" + zoneid + "&target=_blank";
        banner += "&exclude=" + document.phpAds_used;
        banner += "&loc=" + escape(window.location);
        if (document.referrer)
                banner += "&referer=" + escape(document.referrer);
        banner += '&r=' + awrz_rnd;
        banner += "&ct0=" + escape(document.phpAds_ct0);

        // is this zone connected?
        connected_banner = banner_zone_is_connected(zoneid);
        if ( connected_banner )
                banner += "&bannerid=" + connected_banner;

        banner += "'><" + "/script>\n";

        return banner;
}

/**
 * Function returns JS for floating banner
 */
function banner_get_floater(zoneid) {
        banner = "<scr" + "ipt language='JavaScript' type='text/javascript' src='http://adserver.24ur.com/adlayer.php?" +
                 "zoneid=" + zoneid + "&target=_blank&layerstyle=simple&align=center&valign=middle&padding=2&closetime=15&padding=2&shifth=0&shiftv=0&closebutton=t&nobg=t&noborder=t'></scr" + "ipt>";
        return banner;
}

/**
 * Function returns JS for popup banner
 */
function banner_get_popup(zoneid) {
        banner = "<scr" + "ipt language='JavaScript' type='text/javascript' src='http://adserver.24ur.com/adpopup.php?" +
                 "n=" + zoneid + "&zoneid=" + zoneid + "&target=_blank&left=200&top=300&timeout=15&delay=2'></scr" + "ipt>";
        return banner;
}

/**
 * Function returns JS for text banner
 */
function banner_get_text(zoneid) {

        var awrz_rnd = Math.floor(Math.random()*99999999999);
        var awrz_protocol = location.protocol.indexOf('https')>-1?'https:':'http:';
        if (!document.phpAds_used) document.phpAds_used = ',';

        banner  = "<" + "script language='JavaScript' type='text/javascript' src='";
        banner += awrz_protocol+"//adserver.24ur.com/adjs.php?n=" + zoneid + "";
        banner += "&zoneid=" + zoneid + "&target=_blank";
        banner += "&exclude=" + document.phpAds_used;
        banner += "&loc=" + escape(window.location);
        if (document.referrer)
                banner += "&referer=" + escape(document.referrer);
        banner += '&r=' + awrz_rnd;
        banner += "&ct0=" + escape(document.phpAds_ct0);
        banner += "'><" + "/script>";

        return banner;
}


/**
 * Returns bannerid if some other banner has connected this zone with a certain banner
 */
function banner_zone_is_connected( zoneid ) {
        if ( !connect_zone || !connect_banner )
                return false;

        if ( connect_zone == zoneid )
                return connect_banner;

	connect_zone = connect_zone + '';

        if ( connect_zone.indexOf(',') != -1 ) {
                var tmp = ',' + connect_zone + ',';
                if ( tmp.indexOf(',' + zoneid + ',') >= 0 )
                        return connect_banner;
        }

        return false;
}


/**
 * Function returns banner invocation code for certain position
 *
 * @param string position One position from banners array that inv. code will be returned for.
 */
function banner_show(position) {

        for (i=0; i<banners.length; i++)
                if (banners[i][0]==position) return banners[i][3];

        return "";
}

/**
 * Function returns DIV object reference
 */
function banner_find_div(div_name) {
        if (!div_name) return false;

        var div_element = document.getElementById(div_name);

        if (!div_element) return false;
        if (div_element == "undefined") return false;

        return div_element;
}

/**
 * These functions can be fired by flash when mouse exits flash banner
 */
function praNoAct() {}

function praHide() {

        if (!praHide_functions) return;

        for (i=0; i<praHide_functions.length; i++) {

                funct_name = praHide_functions[i][0];
                params     = praHide_functions[i][1];

                if (eval('typeof(' + funct_name + ')') == "function") {
                        eval(funct_name + "(" + params + ")");
                }
        }

        return;
}


/**
 * This function registers handlers (functions) that are being called when banenr issues praHide()
 */
function register_praHide(func_name, params) {

        if (!praHide_functions)
                praHide_functions = new Array( new Array(func_name, params) );
        else
                praHide_functions[praHide_functions.length] = new Array(func_name, params);
}

/**
 * This function is executed, when mouse enters flash rollbanner space.
 * Function fills rollbanner div with rollbanner HTML and sets it's visibiliti to 'visible'.
 */
function praShow() {

        if (rollbanner_check != false) return;
        if (!rollbanner) return;
        if (!banners) return;

        pop = document.getElementById("popbox");

        var orig = banner_find_div(rollbanner[0]);
        if (!orig) return;

        if (isNaN(parseInt(rollbanner[4])) || (rollbanner[4]==-1))
                rollbanner[4] = banner_position_x(orig);
        if (isNaN(parseInt(rollbanner[5])) || (rollbanner[5]==-1))
                rollbanner[5] = banner_position_y(orig);

        pop.innerHTML = rollbanner[3];
        pop.style.border = '';
        pop.style.width = rollbanner[1] + "px";
        pop.style.height = rollbanner[2] + "px";
        pop.style.padding = "0px";
        pop.style.background = "#F0F0F0";
        pop.style.left = rollbanner[4] + "px";
        pop.style.top  = rollbanner[5] + "px";
        pop.style.visibility = "visible";

        rollbanner_check = pop;
        document.onmousemove = banner_mousemove;
}

/**
 * Function returns object dimensions (top left and bottom right points)
 */
function banner_get_dimensions(obj) {
        var x1, x2, y1, y2;

        x1 = banner_position_x(obj);
        y1 = banner_position_y(obj);
        x2 = x1 + parseInt(obj.offsetWidth);
        y2 = y1 + parseInt(obj.offsetHeight);

        return new Array(x1,y1,x2,y2);
}

/**
 * Function returns true, if mouse pointer (pos_x & pos_y) is inside banner space (dim)
 */
function banner_is_inside(dim, pos_x, pos_y) {
        return (dim[0] < pos_x) && (dim[2] > pos_x) && (dim[1] < pos_y) && (dim[3] > pos_y);
}

/**
 * This function is executed, when mouse exits banner space.
 * Function hides rollbanner div.
 */
function banner_mousemove(evt) {

        if (typeof(rollbanner_check) == 'undefined') return;

        if (rollbanner_check) {
                var orig = banner_find_div(rollbanner[0]);

                orig_dim = banner_get_dimensions(orig);
                roll_dim = banner_get_dimensions(rollbanner_check);

                if (document.all) {
                        if (document.documentElement.scrollTop) sy = document.documentElement.scrollTop;
                        else sy = document.body.scrollTop;

                        x = event.clientX+document.documentElement.scrollLeft;
                        y = event.clientY+sy;

                } else {
                        x = evt.pageX;
                        y = evt.pageY;
                }

                if (!banner_is_inside(orig_dim, x, y) && !banner_is_inside(roll_dim, x, y)) {

                        document.onmousemove = null;

                        rollbanner_check.style.visibility = "hidden";
                        rollbanner_check.style.left = "0px";
                        rollbanner_check.style.top = "0px";
                        rollbanner_check.style.width = "0px";
                        rollbanner_check.style.height = "0px";

                        rollbanner_check = false;
                        if (!document.all) orig.innerHTML = orig.innerHTML;
                }
        }
}

/**
 * Function returns object's absolute X position
 */
function banner_position_x(obj) {
        var x = 0;
        while (obj.offsetParent) {
                x = x + obj.offsetLeft
                obj = obj.offsetParent;
        }
        return x;
}

/**
 * Function returns object's absolute Y position
 */
function banner_position_y(obj) {
        var y = 0;
        while (obj.offsetParent) {
                y = y + obj.offsetTop
                obj = obj.offsetParent;
        }
        return y;
}



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Rollbanner will be shown inside this DIV
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
document.write('<DIV id="popbox" style="POSITION: absolute; TOP: 0px; LEFT: 0px; VISIBILITY: hidden; Z-INDEX: 100; "></DIV>');

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Initializatin function (sets banner array)
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
banners_get(section_id);

//-->