/**
 * All kind of JavaScript functions we need
 */

var toggleElementSubs_divs = Array();



/* var global_mainanisrc;
var global_mainanilimit;
var global_opacity;

// change src of main_ani image
function changeMainani(mainanisrc, mainanilimit) 
{
  var mainani = document.getElementById('main_ani');
  var current_no = 0;
  var path = '';
  var new_no = 0;
  
  // extract number of filename
  var reg = "^(.*)([0-9]+)\\\.jpg$";
  var regex = new RegExp(reg, "i");
  if( mainanisrc.match(regex) ) 
  {
    path       = RegExp.$1;
    current_no = RegExp.$2;
  }
  
  // set new value
  new_no = parseInt(current_no) + 1;
  if( new_no > mainanilimit )
    new_no = 1;
 
  // hide new image
  if( (navigator.appName.indexOf("Microsoft") !=-1) && (parseInt(navigator.appVersion) >= 4) )
  {
    mainani.style.filter = 'alpha(opacity=0)';
    //mainani.filters.alpha.opacity = 0;
  }
  else 
  {
    mainani.style.MozOpacity = 0;
    // mainani.style.opacity = 0;  // Opera style
  }
  
  // compose new src
  mainani.src = path + new_no + '.jpg';

  // start increasing opacity
  fade_in(10);


  // more recursion wanted
  global_mainanisrc   = mainani.src;
  global_mainanilimit = mainanilimit;
  setTimeout("changeMainani(global_mainanisrc, global_mainanilimit)",6000);
}


function fade_in(opacity)
{
  var mainani = document.getElementById('main_ani');

  if( opacity <= 100 )
  {
    if( (navigator.appName.indexOf("Microsoft") !=-1) && (parseInt(navigator.appVersion) >= 4) )
    {
      mainani.style.filter = 'alpha(opacity='+opacity+')';
      //mainani.filters.alpha.opacity = opacity;
    }
    else 
    {
      mainani.style.MozOpacity = opacity/100;
      // mainani.style.opacity = opacity/100;  // Opera style
    }

    opacity += 10;
  
    global_opacity = opacity;
    setTimeout("fade_in(global_opacity)",100);
  }
  else 
  {
    return;
  } 
}
*/



function socialbookmarks(site) 
{
  var url2go2 = "";
  var currenturl = document.location.href;

  // remove session
  var reg = "sid[^/&]+[/&]";
  var regex = new RegExp(reg, "i");
  if( currenturl.match(regex) ) 
    currenturl = currenturl.replace(regex, '');

  switch(site) 
  {
    case "blinklist":
      url2go2 = "http://blinklist.com/index.php?Action=Blink/addblink.php&Url=" + encodeURIComponent(currenturl) + "&Title=" + encodeURIComponent(document.title) + "&Tag=Geschenke,Geschenkideen";
      break;
    case "delicious":
      var loc = currenturl;
      var apos = loc.indexOf("#");  // test for existence
      loc = (apos > 0 ? loc.substring(0,apos) : loc);
      url2go2 = "http://del.icio.us/post?v=2&url=" + encodeURIComponent(loc) + "&title=" + encodeURIComponent(document.title);
      break;
    case "furl":
      url2go2 = "http://furl.net/storeIt.jsp?u=" + encodeURIComponent(currenturl) + "&t=" + encodeURIComponent(document.title);
      break;
    case "google":
      url2go2 = "http://www.google.com/bookmarks/mark?op=add&hl=de&bkmk=" + encodeURIComponent(currenturl) + "&title=" + encodeURIComponent(document.title);
      break;
    case "linkarena":
      url2go2 = "http://linkarena.com/bookmarks/addlink/?url=" + encodeURIComponent(currenturl) + "&title=" + encodeURIComponent(document.title);
      break;
    case "oneview":
      url2go2 = "http://beta.oneview.de:80/quickadd/neu/addBookmark.jsf?URL=" + encodeURIComponent(currenturl) + "&title=" + encodeURIComponent(document.title);
      break;
    case "stumpleupon":
      url2go2 = "http://www.stumbleupon.com/submit?url=" + encodeURIComponent(currenturl) + "&title=" + encodeURIComponent(document.title);
      break;
    case "webnews":
      url2go2 = "http://www.webnews.de/einstellen?url=" + encodeURIComponent(document.location) + "&title=" + encodeURIComponent(document.title);
      break;
    case "wong":
      url2go2 = "http://www.mister-wong.de/index.php?action=addurl&bm_url=" + encodeURIComponent(currenturl) + "&bm_description=" + encodeURIComponent(document.title);
      break;
    case "yigg":
      url2go2 = "http://yigg.de/neu?exturl=" + encodeURIComponent(currenturl);
      break;
  }

  if( url2go2.length > 0 )
    window.open(url2go2);
}


function big_popup(url, mywidth, myheight)
{
  if( !mywidth )
    mywidth = 700;
  if( !myheight )
    myheight = 550;

  var windowParameter = 'width=' + mywidth + ',height=' + myheight + ',left=100,top=100,resizable=yes,scrollbars=yes';
  newWindow = window.open(url, '', windowParameter);
}


var nlwlcounter = 1000;
var nlwlguestcounter = 1000;

function addNewWLItem(scripturl,lng)
{
  nlwlcounter--;

  if( nlwlcounter < 970 )
  {
    alert('sollte nun genug sein ...');
    return;
  }

  var newdiv = document.createElement("div");
  newdiv.id               = 'div_idea_' + nlwlcounter;
  newdiv.className        = 'row';
  newdiv.style.background = (nlwlcounter%2 ? "#FFEEEE" : "#EAE9E6");

  if( lng == 'de' )
  {
    newdiv.innerHTML = '' +
//"  <div style='float: right;'><img src='img/dub_arrows.gif' alt='vorwaerts' class='normal' />&nbsp;<a href=\"javascript: addNewWLItem('" + scripturl + "','" + lng + "');\">weitere Geschenkidee einf&uuml;gen?</a></div> " + 
"  <div style='float: right; padding: 5px;'>" + 
"    <a href=\"javascript:;\" onclick=\"if( confirm('Wirklich l&ouml;schen?') ) {var div2del = document.getElementById('div_idea_" + nlwlcounter + "'); div2del.style.padding = '0'; div2del.style.border = '0'; div2del.innerHTML = ''; return;}\" title='Geschenkidee l&ouml;schen' rel='nofollow'><img src='img/delitem.gif' alt='delete' border='0' /></a> " + 
"  </div>" + 
"  <div style='width: 100px; height: 125px; float: left; line-height: 22px; margin: 7px 0 0 0; border-right: 1px solid #000;'>" + 
"    neuer Wunsch:" + 
"  </div>" + 
"  <div style='line-height: 22px; padding: 7px 0 0 5px; margin: 0 0 0 110px;'>" + 
"    <input type='hidden' name='wishlist_item_nr_" + nlwlcounter + "' value='1' /> " + 
"    <input type='hidden' id='wishlist_item_idea_id_" + nlwlcounter + "' name='wishlist_item_idea_id_" + nlwlcounter + "' value='' />" + 
"    " + 
"    <div id='wishlist_item_added_" + nlwlcounter + "' style='visibility: hidden; position: absolute; left: 370px;'><img src='img/chosen.gif' border='0' width='12' alt='chosen' align='left' style='margin-top: 3px;' /> (Geschenkidee <a href='" + scripturl + "/do=idea/id=' onclick=\"this.href += document.getElementById('wishlist_item_idea_id_" + nlwlcounter + "').value;\" rel='nofollow' target='_blank'>ansehen</a>)</div>" + 
"    <ul style='margin: 0 0 15px 5px;'>" + 
"      <li><a href='javascript: big_popup(\"" + scripturl + "/do=wl_search/id=" + nlwlcounter + "\");' rel='nofollow'><b>Geschenkidee suchen</b></a></li>" + 
"      <li>oder URL/Web-Adresse<br /><input type='text' name='wishlist_item_url_" + nlwlcounter + "' class='normal' style='width: 200px;' maxlength='255' value='' /> eintragen</li>" + 
"    </ul>" + 
"" + 
"    Name: <input type='text' id='wishlist_item_" + nlwlcounter + "' name='wishlist_item_" + nlwlcounter + "' class='normal' style='width: 200px;' maxlength='150' value='der Name Ihrer Geschenkidee' onclick=\"if( this.value == 'der Name Ihrer Geschenkidee' ) this.value=''\" />" + 
"    <div style='clear: left;'></div>" + 
"" + 
"  </div>";
  }
  else if( lng == 'en' )
  {
    newdiv.innerHTML = '' +
//"  <div style='float: right;'><img src='img/dub_arrows.gif' alt='vorwaerts' class='normal' />&nbsp;<a href=\"javascript: addNewWLItem('" + scripturl + "','" + lng + "');\">Add more gift ideas?</a></div> " + 
"  <div style='float: right; padding: 5px;'>" + 
"    <a href=\"javascript:;\" onclick=\"if( confirm('Really delete?') ) {var div2del = document.getElementById('div_idea_" + nlwlcounter + "'); div2del.style.padding = '0'; div2del.style.border = '0'; div2del.innerHTML = ''; return;}\" title='delete gift idea' rel='nofollow'><img src='img/delitem.gif' alt='delete' border='0' /></a> " + 
"  </div>" + 
"  <div style='width: 100px; float: left; line-height: 22px;'>" + 
"    New gift wish:" + 
"  </div>" + 
"  <div style='line-height: 22px; border-left: 1px solid #000; padding: 0 0 0 5px; margin: 0 0 0 100px;'>" + 
"    <input type='hidden' name='wishlist_item_nr_" + nlwlcounter + "' value='1' /> " + 
"    <input type='hidden' id='wishlist_item_idea_id_" + nlwlcounter + "' name='wishlist_item_idea_id_" + nlwlcounter + "' value='' />" + 
"    " + 
"    <div id='wishlist_item_added_" + nlwlcounter + "' style='visibility: hidden; position: absolute; left: 370px;'><img src='img/chosen.gif' border='0' width='12' alt='chosen' align='left' style='margin-top: 3px;' /> (<a href='" + scripturl + "/do=idea/id=' onclick=\"this.href += document.getElementById('wishlist_item_idea_id_" + nlwlcounter + "').value;\" rel='nofollow' target='_blank'>view</a> gift idea)</div>" + 
"    <ul style='margin-top: 0 0 15px 5px;'>" + 
"      <li><a href='javascript: big_popup(\"" + scripturl + "/do=wl_search/id=" + nlwlcounter + "\");' rel='nofollow'><b>Search gift idea</b></a></li>" + 
"      <li>or enter URL/web address<br /><input type='text' name='wishlist_item_url_" + nlwlcounter + "' class='normal' style='width: 200px;' maxlength='255' value='' /></li>" + 
"    </ul>" + 
"" + 
"    Name: <input type='text' id='wishlist_item_" + nlwlcounter + "' name='wishlist_item_" + nlwlcounter + "' class='normal' style='width: 200px;' maxlength='150' value='name of gift idea' onclick=\"if( this.value == 'name of gift idea' ) this.value=''\" />" + 
"    <div style='clear: left;'></div>" + 
"" + 
"  </div>";
  }

  var daddy     = document.getElementById('wl_items');
  var reference = document.getElementById('div_idea_' + (nlwlcounter+1));
  daddy.insertBefore(newdiv, reference.nextSibling);   // .nextSibling emulates "insertAfter"
  //daddy.insertBefore(newdiv, reference);
}


function addNewWLGuest(scripturl,lng)
{
  nlwlguestcounter--;

  if( nlwlguestcounter < 970 )
  {
    alert('sollte nun genug sein ...');
    return;
  }

  var newdiv = document.createElement("div");
  newdiv.id               = 'div_guest_' + nlwlguestcounter;
  newdiv.className        = 'row';
  newdiv.style.background = (nlwlguestcounter%2 ? "#FFEEEE" : "#EAE9E6");

  if( lng == 'de' )
  {
    newdiv.innerHTML = '' +
//"  <div style='float: right;'><img src='img/dub_arrows.gif' alt='vorwaerts' class='normal' />&nbsp;<a href=\"javascript: addNewWLGuest('" + scripturl + "','" + lng + "');\">weiteren Gast hinzuf&uuml;gen?</a></div> " + 
"  <div style='float: right; padding: 5px;'>" + 
"    <a href=\"javascript:;\" onclick=\"if( confirm('Wirklich l&ouml;schen?') ) {var div2del = document.getElementById('div_guest_" + nlwlguestcounter + "'); div2del.style.padding = '0'; div2del.style.border = '0'; div2del.innerHTML = ''; return;}\" title='Gast l&ouml;schen' rel='nofollow'><img src='img/delitem.gif' alt='delete' border='0' /></a> " + 
"  </div>" + 
"  <div style='width: 100px; float: left; line-height: 22px;'>" + 
"    neuer Gast:" + 
"  </div>" + 
"  <div style='line-height: 22px; border-left: 1px solid #000; padding: 0 0 0 5px; margin: 0 0 0 100px;'>" + 
"    <input type='hidden' name='wishlist_guest_nr_" + nlwlguestcounter + "' value='1' /> " + 
"    " + 
"" + 
"    Name: <input type='text' id='wishlist_guest_" + nlwlguestcounter + "' name='wishlist_guest_" + nlwlguestcounter + "' class='normal' style='width: 200px;' maxlength='150' value='der Name Ihres Gastes' onclick=\"if( this.value == 'der Name Ihres Gastes' ) this.value=''\" /><br />" + 
"    E-Mail: <input type='text' id='wishlist_guest_email_" + nlwlguestcounter + "' name='wishlist_guest_email_" + nlwlguestcounter + "' class='normal' style='width: 200px;' maxlength='255' value='die E-Mail-Adresse Ihres Gastes' onclick=\"if( this.value == 'die E-Mail-Adresse Ihres Gastes' ) this.value=''\" />" + 
"    <div style='clear: left;'></div>" + 
"" + 
"  </div>";
  }
  else if( lng == 'en' )
  {
    newdiv.innerHTML = '' +
//"  <div style='float: right;'><img src='img/dub_arrows.gif' alt='vorwaerts' class='normal' />&nbsp;<a href=\"javascript: addNewWLGuest('" + scripturl + "','" + lng + "');\">Invite more guests?</a></div> " + 
"  <div style='float: right; padding: 5px;'>" + 
"    <a href=\"javascript:;\" onclick=\"if( confirm('Really delete?') ) {var div2del = document.getElementById('div_guest_" + nlwlguestcounter + "'); div2del.style.padding = '0'; div2del.style.border = '0'; div2del.innerHTML = ''; return;}\" title='delete guest' rel='nofollow'><img src='img/delitem.gif' alt='delete' border='0' /></a> " + 
"  </div>" + 
"  <div style='width: 100px; float: left; line-height: 22px;'>" + 
"    New guest:" + 
"  </div>" + 
"  <div style='line-height: 22px; border-left: 1px solid #000; padding: 0 0 0 5px; margin: 0 0 0 100px;'>" + 
"    <input type='hidden' name='wishlist_guest_nr_" + nlwlguestcounter + "' value='1' /> " + 
"    " + 
"" + 
"    Name: <input type='text' id='wishlist_guest_" + nlwlguestcounter + "' name='wishlist_guest_" + nlwlguestcounter + "' class='normal' style='width: 200px;' maxlength='150' value='name of guest' onclick=\"if( this.value == 'name address of guest' ) this.value=''\" /><br />" + 
"    E-Mail: <input type='text' id='wishlist_guest_email_" + nlwlguestcounter + "' name='wishlist_guest_email_" + nlwlguestcounter + "' class='normal' style='width: 200px;' maxlength='255' value='E-Mail address of guest' onclick=\"if( this.value == 'E-Mail address of guest' ) this.value=''\" />" + 
"    <div style='clear: left;'></div>" + 
"" + 
"  </div>";
  }

  var daddy     = document.getElementById('wl_guests');
  var reference = document.getElementById('div_guest_' + (nlwlguestcounter+1));
  daddy.insertBefore(newdiv, reference.nextSibling);   // .nextSibling emulates "insertAfter"
  //daddy.insertBefore(newdiv, reference);
}




/**
 * make image carousel bigger or smaller
 */
var imgcarousel_size = 'small';
function alterImgCarousel()
{
  toggleGlobalOverlay();

  var cd = document.getElementById('carousel_div');
  if( imgcarousel_size == 'small' )
  {
    document.getElementById('carousel_div_overlay').style.visibility='hidden';
    document.getElementById('carousel_div_overlay_minimize').style.visibility='visible';
    cd.style.width='700px';
    cd.style.height='400px';
    cd.style.top='300px';
    cd.style.left='70px';
    cd.style.border='#800E10 1px solid';
    cd.style.zIndex='30';    // NOTE: z-index: the minus sign is missing but followed by a capital letter
                             // must increase z-level here to be higher than 'div#grey_overlay' (z-level 20)
    imgcarousel_size = 'big';
  }
  else
  {
    document.getElementById('carousel_div_overlay').style.visibility='visible';
    document.getElementById('carousel_div_overlay_minimize').style.visibility='hidden';
    cd.style.width='150px';
    cd.style.height='75px';
    cd.style.top='auto';
    cd.style.left='auto';
    cd.style.border='none';
    cd.style.zIndex='8';    // NOTE: z-index: the minus sign is missing but followed by a capital letter
                            // set z-level back to origin
    imgcarousel_size = 'small';
  }
}



/**
 * display/hide grey overlay div
 */
function toggleGlobalOverlay()
{
  var go = document.getElementById('grey_overlay');
  var fr = document.getElementById('frame');
  var go_v = go.style.visibility;

  // have to set height dynamically because css-100% would refer to visible browser-window only, not whole html-height
  go.style.height = (fr.scrollHeight > fr.offsetHeight ? fr.scrollHeight : fr.offsetHeight) + "px";   // (offset|scroll)Height have only a getter
                     // scrollheight is an IE6 fix

  var body_selects = document.getElementsByTagName("select");

  if( !go_v || (go_v == 'hidden') )
  {
    //document.getElementById('grey_overlay').style.visibility = 'visible';    // old version
    fade_in(0, 'grey_overlay', 70);                                            // cooler version
    for( i = 0; i < body_selects.length; i++ )
      body_selects[i].style.visibility = "hidden";
  }
  else
  {
    //document.getElementById('grey_overlay').style.visibility = 'hidden';     // old version
    fade_out(70, 'grey_overlay');                                              // cooler version
    for( i = 0; i < body_selects.length; i++ )
      body_selects[i].style.visibility = "visible";
  }
}




/**
 * display/hide dedicated element
 *
 * mode A: if only 1 element is given, this one will be toggled
 * mode B: if elems2fadeout is set, these ones are faded out and first element will be faded in
 *
 */
function toggleElement(element, elems2fadeout)
{
  var elem = document.getElementById(element);

  // additional handling: n to fade out, 1 to fade in
  if( elems2fadeout )
  {
    for( i = 0; i < elems2fadeout.length; i++ )
    {
      var elem2fadeout = document.getElementById(elems2fadeout[i]);
      if( elem2fadeout.style.visibility == 'visible' )
        elem2fadeout.style.visibility = 'hidden';

      toggleElementSubs(elem2fadeout.innerHTML, 'hidden')  // hide "children", too
    }
    fade_in(0, element, 100);                                                    // cooler version
    toggleElementSubs(elem.innerHTML, 'visible')           // show "children", too
  }
  // normal handling: 1 to fade in or out
  else
  {
    if( !elem || (elem.style.visibility == 'hidden') )
    {
      //document.getElementById('grey_overlay').style.visibility = 'visible';    // old version
      fade_in(0, element, 100);                                                  // cooler version
      toggleElementSubs(element.innerHTML, 'visible');  // show "children", too
    }
    else
    {
      //document.getElementById('grey_overlay').style.visibility = 'hidden';     // old version
      fade_out(100, element);                                                    // cooler version
      toggleElementSubs(element.innerHTML, 'hidden');   // hide "children", too
    }
  }
}

/**
 * display/hide divs that are positioned absolutely and children of given content
 */
function toggleElementSubs(content, mode)
{
  var reg = "id=['\"]?([a-zA-Z0-9_]+)['\" ]";
  var regex = new RegExp(reg, "i");
  
  // loop as long as there is a match and replace it
  while ( content.match(regex) ) 
  {
    var current_id = RegExp.$1;
    var current_elem = document.getElementById(current_id);
    if( current_elem && (current_elem.style.position == 'absolute') )
    {
      if( (mode == 'visible') && toggleElementSubs_divs[current_id] )
        current_elem.style.visibility = toggleElementSubs_divs[current_id];
      else
        current_elem.style.visibility = mode;
    }
    content = content.replace(regex, '');   // needed for incremental search
  }
}

/**
 * init status of display/hide-modes of special divs
 */
function toggleElementSubsInit(element, hideemthen)
{
  var elem    = document.getElementById(element);
  var content = elem.innerHTML;

  var reg = "id=['\"]?([a-zA-Z0-9_]+)['\" ]";
  var regex = new RegExp(reg, "i");
 
  // loop as long as there is a match and replace it
  while( content.match(regex) ) 
  {
    var current_id = RegExp.$1;
    var current_elem = document.getElementById(current_id);
    if( current_elem && (current_elem.style.position == 'absolute') )
    {
      toggleElementSubs_divs[current_id] = current_elem.style.visibility;
      if( hideemthen == 'hideem,too!' )
        current_elem.style.visibility = 'hidden';
    }
    content = content.replace(regex, '');   // needed for incremental search
  }
}  
 


function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}





/**
 * add emoticons
 */
function addEmoticon(imagetext)
{
  mytextarea = document.getElementById('comment_content');
  myPasteText(mytextarea, imagetext);
}

/**
 * (browser-independent) version of 'paste text into textarea'
 */
function myPasteText(ta, text)
{
  if( ta.createTextRange)            // IE
  {
    ta.focus();
    document.selection.createRange().duplicate().text = text;
  }
  else if( document.getElementById ) // Mozilla
  {
    var selEnd    = ta.selectionEnd;
    var txtLen    = ta.value.length;
    var txtbefore = ta.value.substring(0,selEnd);
    var txtafter  = ta.value.substring(selEnd, txtLen);
    ta.value      = txtbefore + text + txtafter;
    ta.focus();
  }
  else
    ta.value += text;
}



