var paypalOrderID, defaultRatio = 6, ppcheck = 0;

js.global = {

  initNavigation : function() {
    var tags = $('#navi a');
    for(var i=0;i<tags.length;i++) {
      if(tags[i].className.indexOf('free') == -1) {
        tags[i].onclick = function() {
          $(this).next().each(function() {
            $(this).prev().attr('class', ($(this).css('display') == 'none') ? 'a' : '');
            $(this).animate({ height: ($(this).css('display') == 'none') ? 'show' : 'hide' }, 'normal');
            return false;
          });
          
          if(this.firstChild.tagName.toLowerCase() == 'u') {
            return false;
          }
        }
      }
    }
  },
  
  initPage : function() {
  // Serverzeit
    js.global.updateServerTime();
  
  // input fields
    var formElements = new Array('input', 'textarea');
    for(var e=0;e<formElements.length;e++)
    {
      var input = d.getElementsByTagName(formElements[e]);
      for(var i=0; i<input.length;i++)
      {
        if(input[i].className.indexOf('of') != -1)
        {
          var t = input[i].value;
          input[i].onfocus = function() {
            this.value = '';
          };
        }
      }
    }
    // FAQ HIGHLICHT
      var faq = d.location.href.split('#');
      if(faq[1] && d.location.href.indexOf('faq') != -1) js.global.highlightFAQ('#' + faq[1]);
  },
  
  initScreenshots : function() {
    $(function() {
  // Screenshot Overlay
      $('img[rel=#screenshot]').overlay({
        top: 'center', left: 'center', color: '#FFF', effect: 'apple',
        expose: { color: '#000', loadSpeed: 200, opacity: 0.9 }
      });
            
  // Screenshot Switch
      var loadingImage = new Image();
          loadingImage.src = baseURL + '/images/icons/loading.gif';
  
      $('a[rel=switch]').click(function(item) {
        $('#screenshot :img').attr('src', $(this).attr('href'));
        $('img[rel=#screenshot]').attr('src', loadingImage.src);
        $('img[rel=#screenshot]').attr('src', $(this).attr('rev'));        
        $('a[rel=switch]').each(function(){ $(this).find('img').attr('class', ''); });
        $(this).find('img').attr('class', 'selIMG');        
        return false;
      });
    });
  },
  
  goTo : function(url) {
    return d.location.href = url;
  },
  
  highlightFAQ : function(obj, scr) {
    var id = 'faq_' + obj.split('#')[1];
    var scrollBy = (id == 'faq_bestellung_abbruch' || id == 'faq_daten_an_dritte') ? 0 : -80;
    
    var tags = d.getElementsByTagName('div');
    for(var i=0;i<tags.length;i++)
    {
      if(tags[i].className == 'faq_highlight')
        tags[i].className ='';
    }
    
    $(id).className = 'faq_highlight';
    
    window.setTimeout("window.scrollBy(0," + (scr != 1 ? -1 : 'scrollBy') + ");", 10);
  },
  
  switchPayOptions : function(e) {
    var all = $('#payForm fieldset');
    for(var i=0;i<all.length;i++)
    {
      all[i].className = all[i].className.replace(/disabled/g, '');
    }
    var alli = $('#payForm input');

    if(e == 1)
    {
      for(var i=0;i<all.length;i++) all[i].className = all[i].className + ' disabled';
  
      $('#pp')[0].className = $('#pp')[0].className.replace(/disabled/g, '');
    } else  $('#pp')[0].className = $('#pp')[0].className + ' disabled';
  },
  
  resizeFlashPreview : function() {
    if($('#flash')[0] != null)
    {
      var w = $('#flash')[0].width;
      var h = $('#flash')[0].height;
  
      $('#FlashPreview')[0].style.width  = w + 'px';
      $('#FlashPreview')[0].style.height = h + 'px';
    }
  },
  
  empty : function(str) {
    str = str.replace(/ /g,'');
    return (str == '') ? true : false;
  },
  
  toggleObj : function(objID, clickObj) {
    $('#' + objID).animate({ height: ($('#' + objID)[0].style.display == 'none') ? 'show' : 'hide' }, 'slow');

    if(clickObj) {
      var img = clickObj.getElementsByTagName('img');
      for(var i=0;i<img.length;i++)
      {
        if(img[i].src.indexOf('expand.gif') != -1) img[i].src = img[i].src.replace(/expand\.gif/g, 'collapse.gif');
        else                                       img[i].src = img[i].src.replace(/collapse\.gif/g, 'expand.gif');
      }
    }
  },
  
  loadTemplate : function() {
  	var arrayPageSize = getPageSize();
  	var arrayPageScroll = getPageScroll();
  	var objOverlay = $('#overlay')[0];
        objOverlay.innerHTML = '<img id="upload" src="' + baseURL + '/images/icons/uploadprogress.gif" alt="" />';
  
  	objOverlay.style.height = (arrayPageSize[1] + 'px');
  	objOverlay.style.display = 'block';
    js.global.setOpacity(objOverlay, 8);
  },
  
  resize : function(obj, h) {
    var height = (h == 'auto') ? 'auto' : h + 'px';
    $(obj).style.height = height;
  },
  
  del : function(msg, form) {
    var r = confirm(msg.replace(/\+/g, ' '));
    return (r == true) ? (form ? checkForm(form) : true) : false;
  },
  
  in_array : function() {
    for(p=0;p<arr.length;p++)
      if (item == arr[p])
        return true;
        
    if(arr == item) return true;
        
    return false;
  },
  
  setLabelError : function(labelFor) {
    var label = d.getElementsByTagName('label');
    for(var i=0;i<label.length;i++)
    {
      if(label[i].htmlFor == labelFor)
        label[i].className = label[i].className + ' error';
    }
  },
  
  checkForm : function(formObj, fileTransfer) {
  // reset errors
    var label = formObj.getElementsByTagName('label');
    for(var i=0;i<label.length;i++)
    {
      label[i].className = label[i].className.replace(/error/g, '');
    }
    
    var fileInput = '';
  // text, radio, checkbox
    var input = formObj.getElementsByTagName('input');
    for(var i=0;i<input.length;i++)
    {
      if(input[i].type == 'radio' || input[i].type == 'checkbox')
      {
        if(input[i].lang.indexOf(1) != -1 && input[i].checked == false)
        {
          js.global.setLabelError(input[i].id);
          alert(_form_error_field);
          input[i].focus();
          return false;
        }
      } else if(input[i].type == 'text' || input[i].type == 'password') {
        input[i].className = input[i].className.replace(/ error/g, '');
        if(input[i].lang.indexOf(1) != -1 && input[i].value.length == 0)
        {
          js.global.setLabelError(input[i].id);
          alert(_form_error_field);
          input[i].focus();
          return false;
        } else if (input[i].lang.indexOf('email') != -1 && (input[i].value.indexOf('@') == -1 || input[i].value.indexOf('.') == -1)) {
          js.global.setLabelError(input[i].id);
          alert(_form_error_email_syntax);
          input[i].focus();
          return false;
        }
      } else if(input[i].type == 'file') {
        var ext = input[i].value.split('.');
            ext = '.' + ext[ext.length-1].toLowerCase();
        var allowed_ext = input[i].lang.replace(/1\_(.*?)/g, '$1').replace(/\-/g, ',');

        fileInput += input[i].value;
        if(input[i].lang.indexOf(1) != -1 && input[i].value.length == 0)
        {
          js.global.setLabelError(input[i].id);
          alert(_form_error_field);
          input[i].focus();          
          return false;
        } else if(input[i].lang.indexOf(1) != -1 && !in_array(allowed_ext.split(','), ext)) {
          js.global.setLabelError(input[i].id);
          alert(_form_error_invalid_files + ' ' + allowed_ext.replace(/\,/g, ', '));        
          return false;
        }
      } else if(input[i].type == 'submit') var submitButton = input[i];
    }
    
  // select
    var input = formObj.getElementsByTagName('select');
    for(var i=0;i<input.length;i++)
    {
      if(input[i].lang.indexOf(1) != -1 && input[i].value.length == 0)
      {
        js.global.setLabelError(input[i].id);
        alert(_form_error_field);
        input[i].focus();
        return false;
      }
    }
    
  // textarea
    var input = formObj.getElementsByTagName('textarea');
    for(var i=0;i<input.length;i++)
    {
      if(input[i].lang.indexOf(1) != -1 && input[i].value.length == 0)
      {
        js.global.setLabelError(input[i].id);
        alert(_form_error_field);
        input[i].focus();
        return false;
      }
    }

  // anti spam
    if(formObj.spm) formObj.spm.value = 1;
  // submit
    if(!submitButton) var submitButton = $('#submitButton')[0];
    submitButton.disabled = true; submitButton.style.color = '#888'; submitButton.style.cursor = 'default';
    submitButton.blur();
    
    return true;
  },
  
  addComment : function(commentID, productID) {
    var admin = prompt('Kommentar:');
    js.global.goTo(baseURL + '/bewertungen/?action=admin&id=' + commentID + '&product_id=' + productID + '&admin=' + admin);
  },
  
  updateHits : function() {
    var input = formObj.getElementsByTagName('input');
    for(var i=0;i<input.length;i++)
    {
      if(input[i].type == 'submit')
      {
        var num = parseInt(input[i].value.replace(/(.*?) \(([0-9]+)x\)/g, "$2"));
        input[i].value = (num) ? input[i].value.replace('(' + num + 'x)', '(' + (num + 1) + 'x)') : input[i].value + ' (1x)';
      }
    }
    
    return true;
  },
  
  addFlash : function() {
    var ret = new Object(); ret.embedAttrs = new Object(); ret.params = new Object(); ret.objAttrs = new Object();
    var def = new Array('menu|false', 'quality|high', 'wmode|transparent', 'classid|clsid:d27cdb6e-ae6d-11cf-96b8-444553540000', 'type|application/x-shockwave-flash');
  
    for(var i=0; i<arguments.length; i=i+2)
    {
      ret.objAttrs[arguments[i]]   = arguments[i+1];
      ret.embedAttrs[arguments[i]] = ret.params[arguments[i]] = arguments[i+1];
      ret.params[arguments[i]]     = arguments[i+1];
    }
  
    for(var i=0; i<def.length; i++)
    {
      var s = def[i].split('|');
      if(!ret.params[s[0]])
      {
        ret.objAttrs[s[0]]   = s[1];
        ret.embedAttrs[s[0]] = s[1];
        ret.params[s[0]]     = s[1];
      }
    }
  
    var str = '<object ';
    for(var i in ret.objAttrs)   str += i + '="' + ret.objAttrs[i] + '" '; str += '>';
    for(var i in ret.params)     str += '<param name="' + i + '" value="' + ret.params[i] + '" /> ';  str += '<embed ';
    for(var i in ret.embedAttrs) str += i + '="' + ret.embedAttrs[i] + '" '; str += ' ></embed></object>';
  
    return str;
  },
  
  hideTableRows : function(objID, rows, txt) {
    var e = 0;
    var tr = $('#' + objID + ' tr');
    for(var i=0;i<tr.length;i++) {
      if(tr[i].className != 'head' && tr[i].className != 'kat' && tr[i].className != 'legend' && tr[i].className != 'bottom') {
        e++;
        if((i) > rows) tr[i].style.display = 'none';
      }
    }

  // Klapplink
    if(e > rows)
    {
      var new_tr = d.createElement('tr');
          new_tr.className = 'toggleTable';
          new_tr.innerHTML = '';
          
      var c = d.createAttribute("colspan");
          c.nodeValue = 10;
          
      var new_td = d.createElement('td');
          new_td.setAttributeNode(c);
          new_td.innerHTML = '<a href="javascript:js.global.showTable(\'' + objID + '\')" title="' + txt + '">' + txt + '</a>';
          new_tr.appendChild(new_td);
      
      $('#' + objID)[0].lastChild.insertBefore(new_tr, d.getElementById(objID).getElementsByTagName('tr')[e].nextSibling);
    }
  },
  
  showTable : function(objID) {
    var tr = $('#' + objID + ' tr');
    for(var i=0;i<tr.length;i++) {
      tr[i].style.display = '';
      if(tr[i].className == 'toggleTable') tr[i].parentNode.removeChild(tr[i]);
    }
  },
  
  setOpacity : function(obj, value) {
    if(obj)
    {
    	obj.style.opacity = value/10;
    	obj.style.filter = 'alpha(opacity=' + value*10 + ')';
    }
  },
  
  initPaypalTrans : function(orderID) {
    paypalOrderID = orderID;    
    $.get(baseURL + '/ajax.php?do=paypal&orderid=' + orderID, function(req) { 
      ppcheck++;
      check = req.split('|');
      var completed = (check[0].indexOf('Completed') != -1);
      
      if(ppcheck == 10)                   js.global.goTo(baseURL + '/account/?message=paypal_pending');
      else if(check[0].length == 0)       window.setTimeout("js.global.initPaypalTrans(" + paypalOrderID + ");", 5000);
      else if(completed && check[1] == 0) js.global.goTo(baseURL + '/account/?message=paypal_payed');
      else if(completed && check[1] == 1) js.global.goTo(baseURL + '/account/?message=paypal_payed_verify');
                         else             js.global.goTo(baseURL + '/account/?message=paypal_pending');
    });
  },
  
  initDirectTrans : function(orderID) {
    paypalOrderID = orderID;    
    $.get(baseURL + '/ajax.php?do=paypal&orderid=' + orderID, function(req) { 
      ppcheck++;
      check = req.split('|');
      var completed = (check[0].indexOf('Completed') != -1);
      
      if(ppcheck == 10)                   js.global.goTo(baseURL + '/account/?message=direct_payed_sec');
      else if(check[0].length == 0)       window.setTimeout("js.global.initDirectTrans(" + paypalOrderID + ");", 5000);
      else if(completed && check[1] == 0) js.global.goTo(baseURL + '/account/?message=direct_payed');
                         else             js.global.goTo(baseURL + '/account/?message=direct_payed_sec');
    });
  },
 
  updateServerTime : function() {
  //  $.get(baseURL + '/ajax.php?do=time', function(data) { alert(data) });
  },
  
  classes : function(objID, startClass) {
    var color = (startClass == 'second') ? 0 : 1;    
    $('#' + objID + ' tr').each(function() {
      if($(this).css('display') != 'none' && ($(this).attr('class') == 'first' || $(this).attr('class') == 'second')) {
        var className = (color % 2) ? 'first' : 'second'; color++;   
        $(this).attr('class', className);
      }
    });
  },
  
  downloadHits : function() {
    var hits = parseInt($('span#hits_dl').html());
    $('span#hits_dl').html(hits+1);
  }
  
}

// IE 6 PNG FIX
  if(window.clipboardData && document.compatMode && !window.XMLHttpRequest)
  {
    var blankImg = baseURL + '/inc/pngfix/blank.gif';
    d.styleSheets[0].addRule('img', 'behavior: url(' + baseURL + '/inc/pngfix/iepngfix.htc)');
    d.styleSheets[0].addRule('.png', 'behavior: url(' + baseURL + '/inc/pngfix/iepngfix.htc)');
  }

// ADD STYLESHEET FOR W3C-VALIDATION
  var w3cCSS = baseURL + '/no-w3c.css';
  if(d.createStyleSheet) d.createStyleSheet(w3cCSS);
  else {
    var headID    = d.getElementsByTagName("head")[0];         
    var cssNode   = d.createElement('link');
        cssNode.type  = 'text/css';
        cssNode.rel   = 'stylesheet';
        cssNode.href  = w3cCSS;
        cssNode.media = 'screen';
    headID.appendChild(cssNode);
  }
  
  $(window).load(js.global.initPage);
  if(baseURL.indexOf('127.0.0.1') == -1) onerror = function() { return true; };