if (!hrefDomain) {
	var hrefDomain = 'www.expotop.com';
}
if (!hrefCatalogue) {
	var hrefCatalogue = 'Exhibition';
}
if (!cssFontFace) {
	var cssFontFace = 'Tahoma';
}
if (!cssTr1Bg) {
	var cssTr1Bg = '#ffffff';
}
if (!cssTr2Bg) {
	var cssTr2Bg = '#dde2eb';
}
if (!cssTrHeadBg) {
	var cssTrHeadBg = '#c2c9d6';
}
if (!cssTrBorder) {
	var cssTrBorder = '#C1DAD7';
}
if (!cssTr1FontColor) {
	var	cssTr1FontColor = '#4f6b72';
}
if (!cssTrHeadFontColor) {
	var	cssTrHeadFontColor = '#3b4a4e';
}
if (!cssTr2FontColor) {
	var	cssTr2FontColor = '#45526a';
}
if (!encoding) {
	var encoding = 'CP1251';
}
if (!lang) {
	var lang = 'ru'
}

var tableHeader = new Array();
var jsonParams = new Object();
var EPJSON = new Object();
var EPBANNER = new Object();
var EPADVSRCH = new Object();
var agt = navigator.userAgent.toLowerCase();
var is_ie = ((agt.indexOf("msie") != -1));
EPJSON.login = '';
EPJSON.passHash = '';
EPJSON.language = lang;
EPJSON.codepage = encoding;
EPJSON.isOsel = false;
jsonParams.jumpToNow=true;

window.onload = initJson;
EPJSON.callServer = function (callMethod, callBackFunc, data) {

	var entryURL = "http://ws.expopromoter.com/json/v1/?callMethod=" + callMethod +
							"&callBackFunc=" + callBackFunc +
							"&login=" + this.login +
							"&passHash=" + this.passHash +
							"&data=" + data +
							"&lang=" + this.language +
							"&cp=" + EPJSON.codepage +
							"&rnd=" + Math.random()*1000000;
	//alert(entryURL);
	headElement = document.getElementsByTagName("head").item(0);
	var script = document.createElement("script");
	script.setAttribute("type", "text/javascript");
	script.setAttribute("src", entryURL);
	headElement.appendChild(script);

}


EPJSON.cSSa = function (result) {
	var tbl = document.getElementById('__expo_table');
	var Data = new Array();
	var Index = 0;
	var cssClass = 1;
	var tbodyObject =  document.createElement("tbody");
	tbl.appendChild(tbodyObject);

	/* HEADER */
		var trObject_h =  document.createElement("tr");
		trObject_h.setAttribute((is_ie ? 'className' : 'class'), 'expo_tr_head');
		tbodyObject.appendChild(trObject_h);

		var tdObject1_h = document.createElement("td");
		tdObject1_h.innerHTML = tableHeader[0];
		trObject_h.appendChild(tdObject1_h);

		var tdObject2_h = document.createElement("td");
		tdObject2_h.innerHTML = tableHeader[1];
		trObject_h.appendChild(tdObject2_h);

		var tdObject3_h = document.createElement("td");
		tdObject3_h.innerHTML = tableHeader[2];
		trObject_h.appendChild(tdObject3_h);
	/* END HEADER */
	
	if (hrefDomain == 'www.expotop.com') {
		hrefDomain = 'www.expotop.ru';
		hrefCatalogue = 'Event';
	}

	for (i=0; i < result.data.length; i++) {
		cssClass = 1;
		Data = result.data[i];
			if (i%2==0) cssClass = 2;

			var trObject =  document.createElement("tr");
			trObject.setAttribute((is_ie ? 'className' : 'class'), 'expo_tr_'+cssClass);
			tbodyObject.appendChild(trObject);

			var tdObject1 = document.createElement("td");
			tdObject1.innerHTML = '<a href="#" onMouseOver="showDiv(event, \'structure_div\', \''+Data.id+'\'); EPJSON.callServer(\'getExhibition\', \'EPJSON.contentDiv\', jsonParams.toJSONString()); return false;"><img src="http://ws.expopromoter.com/js/v1/info.gif" border="0"></a>&nbsp;<a target="_blank" href="http://'+hrefDomain+'/'+hrefCatalogue+'/lang/ru/id/'+Data.id+'/">'+Data.exName+'</a></b></td>';
			trObject.appendChild(tdObject1);

			var tdObject2 = document.createElement("td");
			tdObject2.innerHTML = '<a target="_blank" href="http://'+hrefDomain+'/'+hrefCatalogue+'/lang/ru/country/'+Data.countryId+'/">'+Data.countryName+'</a>/ <a target="_blank" href="http://'+hrefDomain+'/'+hrefCatalogue+'/lang/ru/country/'+Data.countryId+'/city/'+Data.cityId+'/">'+Data.cityName+'</a>';
			trObject.appendChild(tdObject2);

			var tdObject3 = document.createElement("td");
			tdObject3.innerHTML = Data.period;
			trObject.appendChild(tdObject3);

			Index++;
	}


}

EPJSON.contentDiv = function (result) {
	var _obj = document.getElementById('structure_div');
	_obj.innerHTML = '<p style="margin:2px 0 0 0;"><span><b>Выставка:</b></span>&nbsp;&nbsp;<span>'+result.data.name+'</spam></p>';
	_obj.innerHTML += '<p style="margin:0px 0 0 0;"><span><b>Даты проведения:</b></span>&nbsp;&nbsp;<span>'+result.data.period_date_from+' -  '+result.data.period_date_to+'</spam></p>';
	_obj.innerHTML += '<p style="margin:0px 0 0 0;"><span><b>Страна, город:</b></span>&nbsp;&nbsp;<span>'+result.data.countryName+', '+result.data.cityName+'</spam></p>';
	_obj.innerHTML += '<p style="margin:0px 0 0 0;"><span><b>Место проведения:</b></span>&nbsp;&nbsp;<span>'+result.data.centerName+'</spam></p>';
	_obj.innerHTML += '<p><span><b>Разделы выставки:</b></span>&nbsp;&nbsp;<span>'+result.data.thematicSections+'</spam></p>';
	
	
	
	//alert(result.data.name);
}

function showDiv(event, objid, id) {
	var _obj = document.getElementById(objid);
	_obj.style.left = getMouseXY(event, 'x');
	_obj.style.top =  getMouseXY(event, 'y');
	jsonParams.id = id;
	_obj.innerHTML = '<p style="padding-top:40px;"><center><img src="http://ws.expopromoter.com/js/v1/ajax-loader.gif"></center></p>';
	_obj.style.display = 'block';
}



function getMouseXY(e, objname) {
  var IE = document.all?true:false
  if (IE) { // grab the x-y pos.s if browser is IE
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } else {  // grab the x-y pos.s if browser is NS
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
  // show the position values in the form named Show
  // in the text fields named MouseX and MouseY
  if (objname=='x') return tempX;
  if (objname=='y') return tempY;
 
}

/* style */
document.writeln('<style>');
document.writeln('tr.expo_tr_head td { font: normal 11px '+cssFontFace+'; border-right: 1px solid '+cssTrBorder+'; border-bottom: 1px solid '+cssTrBorder+'; border-top: 1px solid '+cssTrBorder+'; border-left: 1px solid '+cssTrBorder+'; padding: 6px 12px 6px 12px; color: '+cssTrHeadFontColor+'; background-color:'+cssTrHeadBg+';}');
document.writeln('tr.expo_tr_1 td { font: normal 11px '+cssFontFace+'; border-right: 1px solid '+cssTrBorder+'; border-bottom: 1px solid '+cssTrBorder+'; padding: 6px 12px 6px 12px; color: '+cssTr1FontColor+'; background-color:'+cssTr1Bg+';}');
document.writeln('tr.expo_tr_2 td { font: normal 11px '+cssFontFace+'; border-right: 1px solid '+cssTrBorder+'; border-bottom: 1px solid '+cssTrBorder+'; padding: 6px 12px 6px 12px; color: '+cssTr1FontColor+'; background-color:'+cssTr2Bg+';}');
document.writeln('tr.expo_tr_1 td a{ color: '+cssTr1FontColor+'; }');
document.writeln('tr.expo_tr_2 td a{ color: '+cssTr2FontColor+'; }');
document.writeln('tr.expo_tr_1 td:first-child { border-left: 1px solid '+cssTrBorder+'; color:'+cssTr1FontColor+'; }');
document.writeln('tr.expo_tr_2 td:first-child { border-left: 1px solid '+cssTrBorder+'; color:'+cssTr1FontColor+'; }');
document.writeln('</style>');
/* end style */
document.writeln('<table id="__expo_table" width="100%" border=0 cellpadding=0 cellspacing=0></table>');
document.writeln('<div class="struct" id="structure_div" onMouseOut="this.style.display=\'none\'" style="display:none;z-index:500; position:absolute; width:420px; vertical-align: middle; min-height:140px; height:auto;border:1px solid '+cssTr2Bg+'; background-color: #FFFFFF;margin:0; padding:0 5px 0 5px;font: normal 11px Tahoma;color: '+cssTr1FontColor+';"></div>');

function initJson() {
	expoConfigs();
	EPJSON.callServer('getExhibitionsList', 'EPJSON.cSSa', jsonParams.toJSONString());
}

//JSON methods implementations. json.org (c)

if (!Object.prototype.toJSONString) {
    Array.prototype.toJSONString = function () {
        var a = ['['], b, i, l = this.length, v;

        function p(s) {
            if (b) {
                a.push(',');
            }
            a.push(s);
            b = true;
        }

        for (i = 0; i < l; i += 1) {
            v = this[i];
            switch (typeof v) {
            case 'undefined':
            case 'function':
            case 'unknown':
                break;
            case 'object':
                if (v) {
                    if (typeof v.toJSONString === 'function') {
                        p(v.toJSONString());
                    }
                } else {
                    p("null");
                }
                break;
            default:
                p(v.toJSONString());
            }
        }
        a.push(']');
        return a.join('');
    };

    Boolean.prototype.toJSONString = function () {
        return String(this);
    };

    Date.prototype.toJSONString = function () {

        function f(n) {
            return n < 10 ? '0' + n : n;
        }

        return '"' + this.getFullYear() + '-' +
                f(this.getMonth() + 1) + '-' +
                f(this.getDate()) + 'T' +
                f(this.getHours()) + ':' +
                f(this.getMinutes()) + ':' +
                f(this.getSeconds()) + '"';
    };

    Number.prototype.toJSONString = function () {
        return isFinite(this) ? String(this) : "null";
    };

    Object.prototype.toJSONString = function () {
        var a = ['{'], b, i, v;

        function p(s) {
            if (b) {
                a.push(',');
            }
            a.push(i.toJSONString(), ':', s);
            b = true;
        }

        for (i in this) {
            if (this.hasOwnProperty(i)) {
                v = this[i];
                switch (typeof v) {
                case 'undefined':
                case 'function':
                case 'unknown':
                    break;
                case 'object':
                    if (v) {
                        if (typeof v.toJSONString === 'function') {
                            p(v.toJSONString());
                        }
                    } else {
                        p("null");
                    }
                    break;
                default:
                    p(v.toJSONString());
                }
            }
        }
        a.push('}');
        return a.join('');
    };


    (function (s) {
        var m = {
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        };

        s.parseJSON = function (filter) {
            try {
                if (/^("(\\.|[^"\\\n\r])*?"|[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t])+?$/.
                        test(this)) {
                    var j = eval('(' + this + ')');
                    if (typeof filter === 'function') {
                        function walk(k, v) {
                            if (v && typeof v === 'object') {
                                for (var i in v) {
                                    if (v.hasOwnProperty(i)) {
                                        v[i] = walk(i, v[i]);
                                    }
                                }
                            }
                            return filter(k, v);
                        }
                        return walk('', j);
                    }
                    return j;
                }
            } catch (e) {
            }
            throw new SyntaxError("parseJSON");
        };

        s.toJSONString = function () {
            if (/["\\\x00-\x1f]/.test(this)) {
                return '"' + this.replace(/([\x00-\x1f\\"])/g, function(a, b) {
                    var c = m[b];
                    if (c) {
                        return c;
                    }
                    c = b.charCodeAt();
                    return '\\u00' +
                        Math.floor(c / 16).toString(16) +
                        (c % 16).toString(16);
                }) + '"';
            }
            return '"' + this + '"';
        };
    })(String.prototype);
}

// JSON END
function expoConfigs() {
hrefDomain = "www.expotop.com";
hrefCatalogue = "Exhibition";
cssFontFace = "Tahoma";
cssTr1Bg = "#ffffff";
cssTr2Bg = "#dde2eb";
cssTrBorder = "#C1DAD7";
cssTr1FontColor = "#4f6b72";
cssTr2FontColor = "#45526a";
tableHeader = new Array("Название", "Страна / Город", "Дата");
encoding = "CP1251";
lang = "ru";
/* JSON Params */
jsonParams.resultsNum = 15;
}
