function getElemText(node)
{
  return node.text || node.textContent || (function(node){
    var _result = "";
    if (node == null) {
        return _result;
    }
    var childrens = node.childNodes;
    var i = 0;
    while (i < childrens.length) {
      var child = childrens.item(i);
      switch (child.nodeType) {
        case 1: // ELEMENT_NODE
        case 5: // ENTITY_REFERENCE_NODE
            _result += arguments.callee(child);
            break;
        case 3: // TEXT_NODE
        case 2: // ATTRIBUTE_NODE
        case 4: // CDATA_SECTION_NODE
            _result += child.nodeValue;
            break;
        case 6: // ENTITY_NODE
        case 7: // PROCESSING_INSTRUCTION_NODE
        case 8: // COMMENT_NODE
        case 9: // DOCUMENT_NODE
        case 10: // DOCUMENT_TYPE_NODE
        case 11: // DOCUMENT_FRAGMENT_NODE
        case 12: // NOTATION_NODE
        // skip
        break;
      }
      i++;
    }
    return _result;
  }(node));
}

function getBounds(element)
{
  var left = element.offsetLeft;
  var top = element.offsetTop;
  for (var parent = element.offsetParent; parent; parent = parent.offsetParent)
  {
    left += parent.offsetLeft;
    top += parent.offsetTop; 
  }
  return {left: left, top: top, width: element.offsetWidth, height: element.offsetHeight};
}

// ----------------------------------------------------------------------------
Function.prototype.bind = function(object)
{
  var method = this
  return function()
  {
    return method.apply(object, arguments) 
  }
}

// ----------------------------------------------------------------------------
function addOption(select, value, name)
{
  //select = document.getElementById(select);
  //alert(name);
  var newOption = document.createElement('option');
  newOption.appendChild(document.createTextNode(name));
  newOption.value = value;
  select.appendChild(newOption);
  return newOption;
}

// ----------------------------------------------------------------------------
function selector()
{
	var A=null;
	try{A=new ActiveXObject("Msxml2.XMLHTTP")}
	catch(e){try{A=new ActiveXObject("Microsoft.XMLHTTP")}
	catch(oc){A=null}}
	if(!A&&typeof XMLHttpRequest!="undefined") {A=new XMLHttpRequest()}
	return A
}

// ----------------------------------------------------------------------------
function zoom (name, format)
{
  var url = '/images/'+name;
  // '/zoom.plx?n='+name+'&amp;f='+format
  var p = window.open(url, 'preview_window', "width=400,height=500,top=0,left=0,location=0,toolbar=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,fullscreen=0");
  if (p)
    p.focus();
  return false;
}

function showFullSellerPhoto(photoId)
{
  var url = '/companies/photo'+photoId;
  var p = window.open(url, 'preview_window', "width=400,height=500,top=0,left=0,location=0,toolbar=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,fullscreen=0");
  if (p)
    p.focus();
}

function profileSellerCountryChanged()
{
  var form = document.getElementById('sellerProfileForm');
  form.townId.length = 1;
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userTownByCountry.php?countryId="+form.countryId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function profileSellerTownChanged()
{
  var form = document.getElementById('sellerProfileForm');
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userMetroByTown.php?townId="+form.townId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function profileUserCountryChanged()
{
  var form = document.getElementById('userProfileForm');
  form.townId.length = 1;
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userTownByCountry.php?countryId="+form.countryId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function profileUserTownChanged()
{
  var form = document.getElementById('userProfileForm');
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userMetroByTown.php?townId="+form.townId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function registrationUserCountryChanged()
{
  var form = document.getElementById('userRegistrationForm');
  form.townId.length = 1;
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userTownByCountry.php?countryId="+form.countryId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function registrationUserTownChanged()
{
  var form = document.getElementById('userRegistrationForm');
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userMetroByTown.php?townId="+form.townId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function registrationSellerCountryChanged()
{
  var form = document.getElementById('sellerRegistrationForm');
  form.townId.length = 1;
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userTownByCountry.php?countryId="+form.countryId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function registrationSellerTownChanged()
{
  var form = document.getElementById('sellerRegistrationForm');
  form.metroId.length = 1;
  
  ldr = selector();
  if (ldr)
  {
 	  var now = new Date();
    ldr.open("GET", "/ajax/personal.registration.userMetroByTown.php?townId="+form.townId.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}

function exhibitionTownChanged(townSelect)
{
  var form = townSelect.form;
  form.EXHIBITION_PLACE_ID.length = 1;
  
  ldr = selector();
  if (ldr)
  {
	  var now = new Date();
    ldr.open("GET", "placeByTown.php?townId="+form.TOWN_ID.value+"&t="+now.getSeconds(), true);
	  ldr.onreadystatechange = function()
	  {
	    if (ldr.readyState==4 && ldr.responseText)
		  {
        eval(ldr.responseText);
		  }
	  }.bind(form);
	  ldr.send(null)
  }
}