var paypalOrderID, defaultRatio = 6, ppcheck = 0;

js.global = {

  layer: null,

  initNavigation : function() {
    var tags = $('#sidenavi a');
    for(var i=0;i<tags.length;i++) {
      if(tags[i].className.indexOf('free') == -1 && tags[i].className.indexOf('defkat') == -1) {
        tags[i].onclick = function() {
          $(this).next().each(function() {
            $(this).parent().attr('class', ($(this).css('display') == 'none') ? 'a' : '');
            $(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;
          }
        }
      }
    }
  },
  
  trackMouse: function(e)  {
    //if(typeof(layer) == 'object') {
      var offsetX = (typeof(ttWidth)=='string') ? (parseInt(ttWidth)*(-1)-30) : -205;
      var offsetY = 12;
      var mLeft = 5;
      var mTop = -5;
      
  	  x = (ns6) ? e.pageX-mLeft : window.event.clientX+d.documentElement.scrollLeft - mLeft;
  	  y = (ns6) ? e.pageY-mTop  : window.event.clientY+d.documentElement.scrollTop  - mTop;
    
      var layerW = js.global.layer.width() - 3;
      var layerH = js.global.layer.height();
   
      var winW   = (ns6) ? (window.innerWidth) + window.pageXOffset - 12 
                 : d.documentElement.clientWidth + d.documentElement.scrollLeft;
        	
      var winH   = (ns6) ? (window.innerHeight) + window.pageYOffset 
                 : d.documentElement.clientHeight + d.documentElement.scrollTop;
    
      js.global.layer.css('left', ((x+offsetX+layerW >= winW-offsetX) ? x-(layerW+offsetX)    : x+offsetX) + 'px');
      js.global.layer.css('top', ((y+offsetY+layerH >= winH-offsetY) ? y-(layerH+offsetY+10) : y+offsetY) + 'px');
    //}
    
  	return true;
  },
  
  showPreview : function(html) {
    js.global.layer.html('<iframe id="ieFix" style="position:absolute;z-index:0;width:445px;height:270px" frameborder="0"></iframe>'
                       + '<div class="previewBoxContent preview" style="width:100%;height:345px;padding:0;margin:0;overflow:hidden">' + html.replace(/small/g, 'preview') +'</div>');
                       
    js.global.layer.css('width', '445px').css('text-align', 'justify').fadeIn(300);
  },
  
  hidePreview : function() {
    js.global.layer.html('').hide();
  },
  
  initPage : function() {
  // Infodiv  / Tooltip
    $('body').append('<div id="toolTip" style="width:500px"></div>');  
  	js.global.layer = $('div#toolTip');
  	d.body.onmousemove = js.global.trackMouse;
    
  // submit buttons
    $('input.submit, input.button, button').button();
    
  // init Toggle
    js.global.initToggle();
    
  // previews
    $('a[rel="preview"]').attr('title', '').hoverIntent({
        timeout: 1,
        interval: 100,
        over: function() {
          js.global.showPreview($(this).parent().parent().html());
        },
        out: function() {
          js.global.hidePreview();
        }
    });
  
  // 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 && (input[i].type == 'text' || input[i].type == 'password'))
        {
          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]);
  },
  
  goTo : function(url, location) {
    return location ? window.open(url) : 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 = js.global.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) {
    $('label[for="' + labelFor + '"]').addClass('error');
  },
  
  checkForm : function(formObj, func) {
    if(formID) formObj = document.getElementById(formID);
    
  // reset errors
    $('label').removeClass('error');
        
    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);
          input[i].focus();
          js.dialog.alert(_form_error_field);
          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);
          input[i].focus();
          js.dialog.alert(_form_error_field);
          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);
          input[i].focus();
          js.dialog.alert(_form_error_email_syntax);
          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);
          input[i].focus();          
          js.dialog.alert(_form_error_field);
          return false;
        } else if(input[i].lang.indexOf(1) != -1 && !in_array(allowed_ext.split(','), ext)) {
          js.global.setLabelError(input[i].id);
          js.dialog.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 || input[i].value == 0))
      {
        js.global.setLabelError(input[i].id);
        input[i].focus();
        js.dialog.alert(_form_error_field);
        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);
        input[i].focus();
        js.dialog.alert(_form_error_field);
        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();
    
    
    if(typeof(func) == 'function') {
      func();
      return false;
    } else {
      if(typeof(func) == 'boolean') formObj.submit();
      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', 'type|application/x-shockwave-flash', 'allowscriptaccess|always', 'swliveconnect|true');
  //'classid|clsid:d27cdb6e-ae6d-11cf-96b8-444553540000', 
    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]);
    }
  },
  
  hideDivRows : function(objID, rows, txt) {
    var e = 0;
    var p = $('#' + objID + ' p');
        
    for(var i=0;i<p.length;i++) {
      e++;
      if((i) > rows) p[i].style.display = 'none';
    }

  // Klapplink
    if(e > rows) {
      var new_div = d.createElement('div');
          new_div.className = 'right';
          new_div.innerHTML = '<a href="javascript:void(0)" onclick="$(\'#' + objID + ' p\').show();$(this).hide()" title="' + txt + '">' + txt + '</a>';
          
      $('#' + objID).append(new_div);
    }
  },
  
  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');
    });
  },
  
  initMoneybookersTrans : 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=moneybookers_payed_sec');
      else if(check[0].length == 0)       window.setTimeout("js.global.initMoneybookersTrans(" + paypalOrderID + ");", 5000);
      else if(completed && check[1] == 0) js.global.goTo(baseURL + '/account/?message=moneybookers_payed');
                         else             js.global.goTo(baseURL + '/account/?message=moneybookers_payed_sec');
    });
  },
  
  initClickAndBuyTrans : 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=clickandbuy_payed_sec');
      else if(check[0].length == 0)       window.setTimeout("js.global.initClickAndBuyTrans(" + paypalOrderID + ");", 5000);
      else if(completed && check[1] == 0) js.global.goTo(baseURL + '/account/?message=clickandbuy_payed');
                         else             js.global.goTo(baseURL + '/account/?message=clickandbuy_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);
  },
  
  buildStars: function(hidechange) {
    var s = 0;
    $('select.vote').each(function() {
  		var leds = ''; var i = 1; s++;
  		//var sel = $(this).attr('selectedIndex');
      
  		$(this).css('display', 'none').attr('id', 'sel_' + s);      
  		$(this).find('option').each(function() {
        var change = (hidechange) ? '' : ' onmouseover="js.global.fillLEDs(' + s + ', ' + i + ', \'' + $(this).text() + '\')"'
                                       + ' onmouseout="js.global.getLEDs(' + s + ')" onclick="js.global.setLEDs(' + s + ', ' + i + ')" style="cursor:pointer"';
  			leds += '<img src="' + baseURL + '/images/icons/star_inactive.png" alt="" class="icon sel_' + s + '"' + change + ' />';
  			i++;
  		});
  		$(this).after(leds);
    });
	},
	
	fillLEDs: function(sel, s) {
		var i = 1;
		
		$('img.sel_' + sel).each(function() {
			$(this).attr('src', (i <= s ? $(this).attr('src').replace('star_inactive.png', 'star.png') : $(this).attr('src').replace('star.png', 'star_inactive.png')));
			i++;
		});
	},
	
	getLEDs: function(sel) {
		var i = 0;
		var s = $('select#sel_' + sel).attr('selectedIndex');
 
	  //$('#leds_text_' + selectID).html($('#' + selectID).find(':selected').text());
		$('img.sel_' + sel).each(function() {
			$(this).attr('src', (i <= s ? $(this).attr('src').replace('star_inactive.png', 'star.png') : $(this).attr('src').replace('star.png', 'star_inactive.png')));
			i++;
		});
	},
	
	setLEDs: function(sel, s) {
		$('select#sel_' + sel).attr('selectedIndex', (s - 1));
    $('select#sel_' + sel).change();
	},
  
  initToggle: function() {
    var t=0;
    $('.toggle').each(function() {
      if($(this).find(' > a').css('display') == 'none') {
        var tID = 'toggle' + t;
        $(this).attr('id', tID); 
        
        var auto = $.cookie(tID) == 'true' || (!$.cookie(tID) && $(this).hasClass('open'));
        
        $(this).html('<div class="toggleContainer">' + $(this).html() + '</div>');      
        
        $(this).find('.toggleContainer > a').clone().css('display', 'inline')
               .prepend('<img src="' + baseURL + '/images/icons/' + (auto ? 'collapse' : 'expand') + '.gif" alt="" /> ')
               .click(function() {
                 var toggleContainer =  $(this).parent().find('.toggleContainer');
                 var display = toggleContainer.css('display');
                 
                 toggleContainer.slideToggle();
                 
                 $.cookie($(this).parent().attr('id'), (display == 'none'), { expires: 1000 });
                 
                 if(display == 'none') {
                    $(this).find('img').attr('src', $(this).find('img').attr('src').replace('expand', 'collapse'));     
                 } else {
                    $(this).find('img').attr('src', $(this).find('img').attr('src').replace('collapse', 'expand'));   
                 }    
               })
               .prependTo($('#' + tID));   
               
        $(this).find('.toggleContainer > a').remove();
        
        if(auto) {
          $(this).find('.toggleContainer').css('display', 'block');
        }
        
        t++;
      }
    });
  }
  
}

// 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)');
  }
  
// INIT PAGE
  $(window).load(js.global.initPage);
  if(baseURL.indexOf('127.0.0.1') == -1) onerror = function() { return true; };

  
  $(document).ready(function() {
    if(!navigator.userAgent.toLowerCase().match(/iP(hone|ad)/i)) js.global.initPage();
    
		$('input#spm').val(1);		
		
  // init Tabs
    $('div.tabs').tabs({
      fx: { opacity: 'toggle', speed: 10 },
      cookie: { name: 'tab' }
    }).find('ul.tabs').css('display', 'block');
        
  // init Form Tooltips
    $('input[type="text"], select, input[type="text"], input[type="password"], input[type="radio"], input type="checkbox", .help').tooltip();
    
  // remove input onclick
    var c = new Array();
    $('input.click').each(function() {
      c[$(this).attr('id')] = $(this).val();
      $(this).focus(function() {
        if($(this).val() == c[$(this).attr('id')]) $(this).val('');
      });
      $(this).blur(function() {
        if($(this).val() == '') $(this).val(c[$(this).attr('id')]);
      });
    });
    
  // Lightbox Gallery
    $('a.lightbox').each(function() {
      $(this).fancybox({
        'transitionIn'  : 'elastic',
        'transitionOut' : 'elastic',
        'showNavArrows' : ($(this).attr('rel') == 'mainscreen' ? false : true),
        'cyclic'        : true,
        'autoScale'     : false
      });
    });
	// Fancybox Content
		$("a.fancybox_content").fancybox({
		});
  });
