function  picttoggle(target,open)
{
  target = target.firstChild.firstChild.firstChild.firstChild;

     if(open==true)
     {
     	setimgonobj(target,'listarrowd');
     }
     if(open==false)
     	setimgonobj(target,'listarrowr');
}
function sortByName(a,b)
{
  if (a[0] == b[0])
    return 0;
  return (a[0] > b[0]? 1 : -1);
}
function sortByPrice(a,b)
{
  return a[1] - b[1];
}

var ep3regionOrderBy = '';

function ep_regions(r,from_price,flighttimetext,img_sun,img_water,img_map,img_listarrowr,tpl)
{
  var i;
  var rnum = 0;
  if (r)
    document.ep3regionslist = r;
  else
    r = document.ep3regionslist;

  var l=r.length;
  if (from_price)
    document.from_price=from_price;
  if (flighttimetext)
    document.flighttimetext=flighttimetext;
  if (img_sun)
    document.img_sun=img_sun;
  if (img_water)
    document.img_water=img_water;
  if (img_map)
    document.img_map=img_map;
  if (img_listarrowr)
    document.img_listarrowr=img_listarrowr;
  if (tpl)
    document.tpl=tpl;
  document.rooturl=r[0];
  
  var ep3regionTable = document.getElementById('ep3regionTable');
  while ( ep3regionTable.childNodes.length >= 1 )
    ep3regionTable.removeChild(ep3regionTable.firstChild);       
  
  ep3regionOrderBy = 'price';
  if (document.getElementById('ep3regionOrderBy'))
    ep3regionOrderBy = document.getElementById('ep3regionOrderBy').options[document.getElementById('ep3regionOrderBy').selectedIndex].value;
  
  var sort_val_list = new Array();
  var current_sort_element = null;
  //var sort_offset_value = (ep3regionOrderBy == 'price' ? 2 : 1 );
  for (i=1;i<l;i++)
  {
    sort_val_list[sort_val_list.length] = [r[i+1],r[i+2]];
    i+=8;
  }
  if (ep3regionOrderBy == 'price')
    sort_val_list.sort(sortByPrice);
  else
    sort_val_list.sort(sortByName);
  
  var h='';
  while (sort_val_list.length)
  {
    var current_value = sort_val_list.shift();
    for (i=1;i<l;i++)
    {
      var rdescode=r[i];
      var link=r[0]+'&'+r[i++];
      var rname=r[i++];
      var rprice=r[i++];
      var curr=r[i++];
      var lat=r[i++];
      var lng=r[i++];
      var regionmap=r[i++];
      var flighttime=r[i++];
      if (r[i-8+1] == current_value[0] && r[i-8+2] == current_value[1])
      {
        rnum++;
        h+='<div style="height: 23px; padding-right: 0pt;overflow:hidden;" onmouseout="this.className=\'normalstate destination color3bg color3bot color3bob destcountry\'" onmouseover="this.className=\'normalstate destination color4bg color4bot color4bob destcountry\'" class="normalstate destination color3bg color3bot color3bob destcountry">'+
          '<span class="destination color6">'+
            '<a '+'id="ep3_RegionRow'+rnum+'"'+' onclick=\'createReg(this,"'+r[i]+'")\'>'+
            '<span class="dest color6"><img width="15" height="15" '+document.img_listarrowr+' style="float:left;">&nbsp;'+rname+'</span>'+
            '</a>'+
            (typeof document.ep3enableRegionCheckbox !== 'undefined' && document.ep3enableRegionCheckbox == 1 ? '<input type="checkbox" id="country'+ep3_getCountryCode(rdescode)+'" value="'+rdescode+'" style="float:right; width:16px; height:17px; margin-left:0;" onclick="ep3_regionSelect(this)" />':'')+
            '<a href="'+link+'">'+
            '<nobr><span onmouseout="this.className=\'price color8\'" onmouseover="this.className=\'price color7\'" style="font-size: 12px;" class="price color8">'+document.from_price+' '+rprice+' '+curr+'</span></nobr>'+
            '</a>'+
            '<span class="sun2 color1"></span>'+
            //'<span class="sun" style="visibility:hidden;"><img '+img_sun+' /></span>'+
            '<span class="water2  color1"></span>'+
            //'<span class="water" style="visibility:hidden;"><img '+img_water+' /></span>'+
            '<span class="time">'+
             //((regionmap!='')?'<img onclick="hotelinfo(\''+regionmap+'\'); return false" '+img_map+'  class="ep3_htlmap">':'')+
             (flighttime != '' && flighttime!='00:00'?document.flighttimetext+'&nbsp;'+flighttime.replace(/^0/,''):'')+
            '</span>'+
          '</span>'+
        '</div>';
      }
    }
  }
  //document.write(h);
  document.getElementById('ep3regionTable').innerHTML = h;
  for (var i=1; i <= 3; i++)
    if (document.getElementById('ep3_RegionRow'+i))
      document.getElementById('ep3_RegionRow'+i).onclick();
}


function createReg(target,r)
{
  target=target.parentNode.parentNode;
 
  if (target.regexist)
  { 
    if(target.nextSibling != null && target.nextSibling.getAttribute('region') == 1)
      {
        while(target.nextSibling != null  && target.nextSibling.getAttribute('region') == 1)
	    {
	      target.parentNode.removeChild(target.nextSibling);
        }	  
      }
   
    target.regexist=false;
    picttoggle(target,false);
    return;
  }
  target.regexist=true;
  from_price=document.from_price;
  img_sun=document.img_sun;
  img_water=document.img_water;
  img_map=document.img_map;
  tpl=document.tpl;
  r=r.split('^');
  picttoggle(target,true);

  var i=1;
  l=r.length;
  var h='';
  for(;i+9<=l;i+=9)
  {
    h='';
    h+='<span class="destination color6">'+
          (typeof document.ep3enableRegionCheckbox !== 'undefined' && document.ep3enableRegionCheckbox == 1 ? '<input type="checkbox" value="'+r[i+5]+'" style="float:right; width:16px; height:17px; margin-left:0;" onclick="ep3_regionSelect(this)" />':'')+
          '<a href="'+document.rooturl+'&'+r[i+5]+'">'+
          '<span class="dest color6"><img width="15" height="15" '+document.img_listarrowr+' style="visibility:hidden;"> '+r[i]+'</span>'+
          '</a>'+
          '<a href="'+document.rooturl+'&'+r[i+5]+'">'+
          '<nobr><span onmouseout="this.className=\'price color8\'" onmouseover="this.className=\'price color7\'" style="font-size: 12px;" class="price color8">'+from_price+' '+r[i+3]+' '+r[i+4]+'</span></nobr>'+
          '</a>'+
            ((r[i+2]!='')?'<span class="water2  color1">'+r[i+2]+'&deg;C</span>'+'<span class="water"><img '+img_water+' /></span>':'<span class="water2 color1">&nbsp;</span><span class="water"><img '+img_water+' style="border:0px;visibility:hidden;" /></span>')+
            ((r[i+1]!='')?'<span class="sun2 color1">'+r[i+1]+'&deg;C</span>'+'<span class="sun"><img '+img_sun+' /></span>':'<span class="sun2 color1">&nbsp;</span><span class="sun"><img '+img_sun+' style="border:0px;visibility:hidden;" /></span>')+
            ((r[i+6]!='')?'<span class="map"><img class="ep3_htlmap" '+img_map+' onclick="hotelinfo(\''+r[i+6]+'\'); return false" /></span>':'<span class="map"></span>')+
        '</span>';
		var d=document.createElement('DIV');
	d.className = "destination_price normalstate color0bg";
	d.style.height = "23px";
	d.style.overflow = "hidden";
	d.style.padding = "0";
	d.setAttribute("region","1");
    d.setAttribute("onmouseover","this.className='destination_price color4bg color5bot color5bor color5bol color5bob normalstate'");
	d.setAttribute("onmouseout","this.className='destination_price color0bg normalstate'");
	
	d.innerHTML=h;
    if (target.nextSibling)
      target.parentNode.insertBefore(d,target.nextSibling);
    else
      target.parentNode.appendChild(d);
   
    target=target.nextSibling;
  }
  if (typeof document.ep3enableRegionCheckbox !== 'undefined' && document.ep3enableRegionCheckbox == 1)
    ep3_update_region_checkbox(target.parentNode);
}

var gimgsun='';
var gimgwater='';
var gimgarrow='';
var gtpldir='';

function ep_regions_MGM(r,from_price,img_sun,img_water,tpl)
{
  var l=5000;//regionsDict.length;
  var i=0;
  for (; i<l; i++)
  {
    if (regionsDict[i] == undefined)
      continue;
    if (regionsDict[i].l == 0)
      continue;
    //if (regionsDict[i] != undefined)
      document.write('<div style="padding-left:'+(10*regionsDict[i].l)+'px">'+regionsDict[i].n+'</div>');
  }
}

function hideRegion(id)
{
  var regionRow = document.getElementById('subregion_'+id);
  if (regionRow.style.display == 'none')
    regionRow.style.display = '';
  else
    regionRow.style.display = 'none'
}

function ep_regions_MGM2(r,o,target,tfromprice,imgsun,imgwater,imgarrow, tpldir, curr)
{
  if (curr)
    document.from_curr=curr;
  if (r && document.ep3regionslist === undefined)
    document.ep3regionslist = r;
  if (!r)
    r = document.ep3regionslist;
  if (o && document.ep3regionslistlevel === undefined)
    document.ep3regionslistlevel = o;
  if (!o)
    o = document.ep3regionslistlevel;

  if ((imgsun != undefined) && imgsun != '')
    gimgsun = imgsun;
  if ((imgwater != undefined) && imgwater != '')
    gimgwater = imgwater;
  if ((imgarrow != undefined) && imgarrow != '')
    gimgarrow = imgarrow;
  if ((tpldir != undefined) && tpldir != '')
    gtpldir = tpldir;
  
  var inner=false;
  if (o>2)
  {
    inner=true;
    var d;
    
    if ((d=target.parentNode.parentNode.nextSibling) && d.ischild)
    {
      target.parentNode.parentNode.parentNode.removeChild(d);
      setimgonobj(target.firstChild,'listarrowr');
     
      return;
    }
    setimgonobj(target.firstChild,'listarrowd');

  }
  else
  {
    var ep3regionTable = document.getElementById('ep3regionTable');
    while ( ep3regionTable.childNodes.length >= 1 )
      ep3regionTable.removeChild(ep3regionTable.firstChild);
  }       
  
  ep3regionOrderBy = 'price';
  if (document.getElementById('ep3regionOrderBy'))
    ep3regionOrderBy = document.getElementById('ep3regionOrderBy').options[document.getElementById('ep3regionOrderBy').selectedIndex].value;
  
  var sort_val_list = new Array();
  var current_sort_element = null;
  for (i=1;i < r.length;i+=2)
  {
    if (regionsDict[r[i]] === undefined)
    {
      r.splice(i, 2);
      i-=2;
    }
  }
  for (i=1;i < r.length;i+=2)
  {

    var n=i;
    var z=0;
    var subRegions = [];
    var lowerRegion = [];
    var lastSubRegion = null;
    if (o==2 && (regionsDict[r[i]] != undefined) && (regionsDict[r[i+2]] != undefined) && (regionsDict[r[i+2]].l > regionsDict[r[i]].l) && regionsDict[r[i]].l==1)
    {
      n=i+2;
      while ((n<(r.length+2)) && regionsDict[r[n]] !== undefined && regionsDict[r[n]].l >= o )
      {
        if (regionsDict[r[n]].l == 2)
        {
          var srl = subRegions.length;
          subRegions[srl] = [];
          subRegions[srl][0] = regionsDict[r[n]].n;
          subRegions[srl][1] = r[n+1];
          subRegions[srl][2] = regionsDict[r[n]].l
          subRegions[srl][3] = r[n];
          lastSubRegion = r[n];
          z++;
        }
        else
        {
          if (lowerRegion[lastSubRegion] === undefined)
            lowerRegion[lastSubRegion] = [];
          lowerRegion[lastSubRegion][lowerRegion[lastSubRegion].length] = r[n];
          lowerRegion[lastSubRegion][lowerRegion[lastSubRegion].length] = r[n+1];
          z++;
        }
        n+=2;
      }
      n-=2;
    }
    if (o==2 && regionsDict[r[i]] !== undefined && regionsDict[r[i]].l == 1 && subRegions.length)
    {
      if (ep3regionOrderBy == 'price')
        subRegions.sort(sortByPrice);
      else
        subRegions.sort(sortByName);
      
      var m=i+2;
      //r.splice(m, (z*2)-4);//(n+4-m)
      while(subRegions.length)
      {
        var subRegionVal = subRegions.shift();
        r.splice(m++, 1, subRegionVal[3]);
        r.splice(m++, 1, subRegionVal[1]);
        if (lowerRegion[subRegionVal[3]] !== undefined)
        {
          while(lowerRegion[subRegionVal[3]].length)
          {
            var lrv = lowerRegion[subRegionVal[3]].shift();
            r.splice(m++, 1, lrv);
          }
        }
      }
    }


    if (regionsDict[r[i]] !== undefined && regionsDict[r[i]].l == 1 || (o>2 && regionsDict[r[i]].l == o))
    {
      sort_val_list[sort_val_list.length] = [regionsDict[r[i]].n, r[i+1], r[i]];
    }
  }
  if (ep3regionOrderBy == 'price')
    sort_val_list.sort(sortByPrice);
  else
    sort_val_list.sort(sortByName);

  
  
  
  var h='';

  while (sort_val_list.length)
  {
    var current_value = sort_val_list.shift();
    var matched_region = false;
    var l=r.length;
    var i=1;
    for (; i<l; i+=2)
    {
      if (regionsDict[r[i]] != undefined && (current_value[2] == r[i] || matched_region))
      {
        if (current_value[2] == r[i] && regionsDict[r[i]].l == (o-1))
          matched_region = true;
        else if (current_value[2] != r[i] && regionsDict[r[i]].l == (o-1))
        {
          matched_region = false;
          continue;
        }
          if ((regionsDict[r[i+2]] != undefined) && (regionsDict[r[i+2]].l > regionsDict[r[i]].l))
          {
            regionplus = '<img width="15" height="15" '+gimgarrow+' alt="" />';
          }
          else
          {
            regionplus = '';
          }
          
          var n=i;
          var subRegions = [];
          if ((regionsDict[r[i+2]] != undefined) && (regionsDict[r[i+2]].l > regionsDict[r[i]].l) && regionsDict[r[i]].l==o)
          {
            n=i+2;
            while (n<l+2 && regionsDict[r[n]] !== undefined && regionsDict[r[n]].l>o )
            {
              subRegions[subRegions.length] = r[n];
              n+=2;
            }
            regionclick = ' onclick="ep_regions_MGM2(\''+r[0]+'^'+r.slice(i+2,n).join('^')+'\'.split(\'^\'),'+(o+1)+',this)" ';
            n-=2;
          }
          else
          {
            subRegions = [];
            regionclick='';
          }
          
        if (regionsDict[r[i]].l == 1 )
        {
          h += '<div style="height: 23px; padding-right: 0pt;overflow:hidden;" onmouseout="this.className=\'normalstate destination color3bg color3bot color3bob destcountry\'" onmouseover="this.className=\'normalstate destination color4bg color4bot color4bob destcountry\'" class="normalstate destination color3bg color3bot color3bob destcountry">'+
            '<span class="destination color6">'+
              '<span class="dest color6">&nbsp;'+regionsDict[r[i]].n+'</span>'+
              '<span class="sun2 color1"></span>'+
              '<span class="sun" style="visibility:hidden;">&nbsp;</span>'+
              '<span class="water2  color1"></span>'+
              '<span class="water" style="visibility:hidden;">&nbsp;</span>'+
              '<span class="map">'+
              '</span>'+
            '</span>'+
          '</div>';
        }
        else
        {
            h += '<div class="destination_price normalstate color0bg" style="padding-left:'+(24*(regionsDict[r[i]].l - 2))+'px; height:23px; overflow:hidden">' +
            '<span class="destination">'+
            '<span class="dest color6" '+(regionclick?regionclick:'style="cursor:auto;"')+'>'+regionplus+'&nbsp;'+regionsDict[r[i]].n+'</span>'+
            '<a href="'+r[0]+/*'&ds='+*/(/*subRegions.length?subRegions.join(','):*/r[i])+'">'+
            '<nobr><span onmouseout="this.className=\'price color8\'" onmouseover="this.className=\'price color7\'" style="font-size: 12px;" class="price color8">'+' '+r[i+1]+' '+document.from_curr+'</span></nobr>'+
            '</a>'+
          '</span>'+
          '</div>'
            i=n;
        } 
      }
      else {
        //alert(r[i]);
      }  
    }
  }
  if (inner)
  {
    var d=document.createElement('DIV');
    d.innerHTML=h;
    d.ischild=true;
    if (target.parentNode.parentNode.nextSibling)
      target.parentNode.parentNode.parentNode.insertBefore(d,target.parentNode.parentNode.nextSibling);
    else
      target.parentNode.parentNode.parentNode.appendChild(d);
  }
  else
    document.getElementById('ep3regionTable').innerHTML = h;
}

function ep3_getCountryCode(regcode)
{
  if (regcode == '')
    return '';
  if (regcode.indexOf('=') !== -1)
    regcode = regcode.slice(regcode.indexOf('=')+1,regcode.length);
  regcode = unescape(unescape(regcode));
  if (regcode.indexOf('=') !== -1)
    regcode = regcode.slice(regcode.indexOf('=')+1,regcode.length);
  if (regcode.indexOf(':') !== -1)
    return regcode.slice(0,regcode.indexOf(':'));
  if (regcode.indexOf('_') !== -1)
    return regcode.slice(0,regcode.indexOf('_'));
}

ep3SelectedRegions = [];
ep3SelectedCountries = [];
ep3regLinkBegin = '';
function ep3_regionSelect(regioninput)
{
  var regInpVal = regioninput.value;
  
  var countryInp = null;
  if (!regioninput.id)
    countryInp = document.getElementById('country'+ep3_getCountryCode(regInpVal));
  else
    countryCode = ep3_getCountryCode(regInpVal);
  
  ep3regLinkBegin = '';
  ep3regLinkBegin = regInpVal.slice(0, regInpVal.indexOf('=')+1);
  regInpVal = regInpVal.slice(regInpVal.indexOf('=')+1,regInpVal.length);
  regInpVal = unescape(regInpVal);
  if (regInpVal.indexOf('=') !== -1)
  {
    ep3regLinkBegin += escape(regInpVal.slice(0, regInpVal.indexOf('=')+1));
    regInpVal = regInpVal.slice(regInpVal.indexOf('=')+1,regInpVal.length);
  }
  if (regioninput)
  { 
    if (regioninput.checked)
    {
      if (inArray(regioninput.value, ep3SelectedRegions) === -1)
        ep3SelectedRegions.push(regInpVal);
      if (countryInp)
      {
        ep3SelectedCountries.push(ep3_getCountryCode(regInpVal))
        countryInp.checked = false;
        countryInp.disabled = true;
      }
      else
      {
        var rt = document.getElementById('ep3regionTable');
        var inputs = rt.getElementsByTagName('input');
        for (var i=0; i<  inputs.length; i++)
        {
          if (ep3_getCountryCode(inputs[i].value) == countryCode && inputs[i].id == '')
          {
            inputs[i].checked = false;
            inputs[i].disabled = true;
          }
        }
      }
    }
    else
    {
      var regIdx = -1;
      if ((regIdx = inArray(regInpVal, ep3SelectedRegions)) !== -1)
        ep3SelectedRegions.splice(regIdx,1);
      if (countryInp)
      {
        if ((cntryIdx = inArray(ep3_getCountryCode(regInpVal), ep3SelectedCountries)) !== -1)
          ep3SelectedCountries.splice(cntryIdx,1);
        if (inArray(ep3_getCountryCode(regInpVal), ep3SelectedCountries) === -1)
          countryInp.disabled = false;
      }
      else
      {
        var rt = document.getElementById('ep3regionTable');
        var inputs = rt.getElementsByTagName('input');
        for (var i=0; i<  inputs.length; i++)
        {
          if (ep3_getCountryCode(inputs[i].value) == countryCode && inputs[i].id == '')
            inputs[i].disabled = false;
        }
      }
    }
  }
}
function ep3_selRegionsGroup()
{
  var prev = document.URL;
  prev = prev.replace(/&bk=1/g, "");
  prev = prev.replace(/#.*/g, ""); // remove possible anker from link (IE)
  document.location = prev + '&' + ep3regLinkBegin.replace('ds','dsr') + ep3SelectedRegions.join(',');
}
function ep3_update_region_checkbox(target)
{
  var inputs = target.getElementsByTagName('input');
  var region_code = '';
  for (var i=0, il=inputs.length; i < il; i++)
  {
    if (inputs[i].value != '')
    {
      var regInpVal = inputs[i].value;
      regInpVal = regInpVal.slice(regInpVal.indexOf('=')+1,regInpVal.length);
      regInpVal = unescape(regInpVal);
      if (regInpVal.indexOf('=') !== -1)
      {
        ep3regLinkBegin += escape(regInpVal.slice(0, regInpVal.indexOf('=')+1));
        regInpVal = regInpVal.slice(regInpVal.indexOf('=')+1,regInpVal.length);
      }
      if (inArray(regInpVal, ep3SelectedRegions) !== -1)
      {
        if (!inputs[i].id)
          inputs[i].checked = true;
        if (inputs[i].id)
          inputs[i].onclick();
      }
    }
  }
}
