/*  jsRoutineLib.js
 
Predpripravene bezne funkce
Jakub Losert, 10.2010

*/

function basketOrder(url, urldone)
{
  var ret = false;

      $.ajax({
        type: 'POST',
        url: url,
        success: function(data)
              {
                //alert(data);
                if(data.toString()=='true')
                {
                  ret = true; 
                }
                else if(data.toString()=='-4')
                {
                  alert('Nebyla splňena minimální cena objednávky.');
                }
                else if(data.toString()=='-1')
                {
                  alert('Nastala chyba. Objednávku se nepodařilo dokončit. Informujte nás prosím. ');
                }
              },
        dataType: 'text',
        async: false        
      });
    
  return ret;
}              

function basketStepCheck(url, step)
{
  var ret = false;
  
  // STEP 1 CHECK
  //--------------------------------------------------------------------------
  if(step==1)
  {
    var paymentid = null;
    var deliveryid = null;
    //zkontrolovani vyberu platby a dopravy
    $('.payment .tdpayment input').each(
      function(index)
      {
        if(this.checked) {
          paymentid = this.value;
        }
      });
    
    $('.deliveries input.paymentGroup'+paymentid).each(
      function(index)
      {
        if(this.checked) {
          deliveryid = this.value;
        }
      });
    
    
    if(paymentid==null || deliveryid==null)
    {
      $('.payments-deliveries-notchoosederr').removeClass('displaynone');
      return false;
    }
    else
    {
      $.ajax({
        type: 'POST',
        url: url,
        data: { step: step, paymentid: paymentid, deliveryid: deliveryid },
        success: function(data)
              {
                if(data.toString()=='true')
                  ret = true;
                return;
              },
        dataType: 'text',
        async: false        
      });
    }    
    // END STEP 1 CHECK
    //--------------------------------------------------------------------------
    
  }

  return ret;
}

function changePayment(obj, pid)
{
  if(obj.checked)
  {
    $('.payments-deliveries .deliveries input').removeAttr('checked').attr('disabled', 'disabled');
    $('.payments-deliveries .payment .tdpayment.active').removeClass('active');//each( function() { alert($(this).html()); $(this).removeClass('active'); });
    $('.payments-deliveries .deliveries div').removeClass('active');
    $('.payments-deliveries .deliveries input.paymentGroup'+pid).removeAttr('disabled');
    $('.payments-deliveries .payment .tdpayment'+pid).addClass('active');
    //$('.payments-deliveries .deliveries div.delivery'+pid).addClass('active');
    
    
    $('.payments-deliveries .deliveries').hide();
    $('.payments-deliveries .deliveries'+pid).show();
  }
}

function changeDelivery(obj, did)
{
  $('.payments-deliveries .deliveries div').removeClass('active');
  $('.payments-deliveries .deliveries div.delivery'+did).addClass('active');
  $('.payments-deliveries-notchoosederr').addClass('displaynone');
}

function basketItemRecount(url, basketKey, countEl)
{
  basketCountChangeCheck(countEl);
  
  var el = document.getElementById(countEl);
  var newCount = el.value;
  
  $.post(
    url,
    { key : basketKey, count : newCount },
    function (xml)
    {
       var status = parseInt($('STATUS', xml).text());
       var result = $('RESULT', xml).text();
       var msg = $('MSG', xml).text();
    
       if(status>0)
       {
        location.reload(true);
       }
       else if(status==-2)
       {
         alert(msg);
       }
    },
    'xml'    
  );

}

function basketItemRemove(url, basketKey)
{
  
  $.post(
    url,
    { key : basketKey },
    function (data)
    {
      location.reload(true);
    }
  );

}

function basketItemCountUp(countEl)
{
  var el = document.getElementById(countEl);
  
  if(!isPosInt(el.value))
    el.value = '1';
  else
    el.value = parseInt(el.value)+1;
}

function basketItemCountDown(countEl) {
  var el = document.getElementById(countEl);
  
  if(!isPosInt(el.value))
    el.value = '1';
  else
    if(parseInt(el.value) >= 2)
      el.value = parseInt(el.value)-1;
}

function basketCountChangeCheck(countEl) {
  var el = document.getElementById(countEl);
 
  if(!isNumber_N(el.value)) {
    el.value = '1';
  }
}

function selectItemVariant(thisobj,
                           url,
                           formelid,
                           itemid,
                           variantid_elid,
                           variantidparams_elid,
                           pricevat_elid,
                           price_elid,
                           commonSett,
                           discountSett)  
{

  $('#'+variantid_elid).attr('value','');
  $('#'+variantidparams_elid).attr('value','');   
  
  if(!(thisobj.value>0)) return false;
  
  var form_serialized = $('#'+formelid).serialize(); 
  
  $('#variantprofiles .itemprofileselect').attr('disabled', 'disabled');
  
  //alert(url+'/'+itemid); // /catalog::selectItemVariant/80912
  //alert(form_serialized); // itemprofilesparams%5B1%5D=6&itemprofilesparams%5B2%5D=3&itemprofilesparams%5B3%5D=3 
  
  $.post(
    url+'/'+itemid,
    form_serialized,
    function(xml)
    { 
      $('#variantprofiles .itemprofileselect').removeAttr('disabled');
      
      var selectedParams = $('selectedParams', xml).text();
      var idvariant = $('idvariant', xml).text();
      var pricevat = $('pricevat', xml).text();
      var price = $('price', xml).text();
      var priceCommon = $('priceCommon', xml).text();   
      var variantDetails = $('variantDetails', xml).text();
      var availablty = $('availability', xml).text(); 
      var minordercount = parseInt($('minordercount', xml).text()); 
      
      //alert($('variantDetails', xml).text());
      
      if(minordercount>0 && $('#__ordercount').val()<minordercount)
        $('#__ordercount').val(minordercount);
      
      $('#'+variantid_elid).attr('value', idvariant);
      $('#'+variantidparams_elid).attr('value', selectedParams);
      $('#'+pricevat_elid).html(pricevat);
      $('#'+price_elid).html(price);
      if(priceCommon>0)
      {
        if(commonSett=='1')
        {
          var priceCommon_elid = 'pricecommon'+itemid;
          $('#'+priceCommon_elid).html(priceCommon);
          $('#'+priceCommon_elid).show();
        }
        if(discountSett=='1')
        {
          var priceDiscount_elid = 'pricediscount'+itemid;
          $('#'+priceDiscount_elid).html(priceCommon-pricevat);
          $('#'+priceDiscount_elid).show();
        }
      }    
        
      $('#variantDetails').html(variantDetails); 
      
      if(availablty=='-1') $('#pDetailCountAndBuyBtn').hide();
      else $('#pDetailCountAndBuyBtn').show();  
    },
    'xml'
  );
  
  return false;
}

function changeProfileParam(url, 
                            idparam, 
                            idprofile, 
                            iditem,
                            variantIDel,
                            formelid)
{
  
  $('#'+variantIDel).attr('value','');
  
  var form_serialized = $('#'+formelid).serialize();
  
  $('#variantprofiles .itemprofileselect').attr('disabled', 'disabled');
  $('#variantDetails').html(''); 
  
  $.post(
    url+'/'+idparam+'/'+idprofile+'/'+iditem,
    form_serialized,
    function(xml)
    {
      $('#variantprofiles .itemprofileselect').removeAttr('disabled');
      
      var emptyIds = $('empty', xml).text().split(';');
      var init;
      for(i=0; i<emptyIds.length;i++)
      {
        init = $('#itemprofileselect'+emptyIds[i]+' option:first');
        $('#itemprofileselect'+emptyIds[i]).html('<option value="'+init.attr('value')+'">'+init.html()+'</option>');
      }
        
      var loadedID = $('loaded', xml).text();

      var loaded = $('loadedParams', xml).find('param');
      var id;
      var name;
      var loadedSelectHTML = '';
      
      if(loaded.length)
      {
        for(i=0; i<loaded.length;i++)
        {
          //alert($('id', loaded[i]).text());
          id = $('id', loaded[i]).text();//.find('id').text();
          name = $('name', loaded[i]).text();//.find('name').text();
          loadedSelectHTML += '<option value="'+id+'">'+name+'</option>';
        }
        
        $('#itemprofileselect'+loadedID).append(loadedSelectHTML);
      }
      
      
    },
    'xml'
  );
  
}
 
function deleteVisitedList(url, elDeleteId, elCountId)
{
  $.post(
      url,
      function (data)
      {
        $('#'+elDeleteId).html('');
        $('#'+elCountId).html('0');
        $('a.visited').click();
      },
      'text'
  );
}

function addToBasket(url, elForm, elVariantID)
{
  
  if(!(document.getElementById(elVariantID).value)>0)
  {
    alert('Zvolte nejprve variantu.');
    return false;
  }
  
  $.post(
      url,
      $(elForm).serialize(),
      function(xml)
      { 
       var status = parseInt($('STATUS', xml).text());
       var result = $('RESULT', xml).text();
       var msg = $('MSG', xml).text();
       
       if(status==-2)
       {             
          alert(msg);
          $('#__ordercount').val(result);
       }
       else if(status) 
       {
          $('#__basket_render_zone__').html(result);
          $('a.up').click();
          $('a.basket').PopUp('.basket-popup', '1');
          $('a.basket').click();  
       }   
      },
      'xml'
  );
  
  return false;
}

/** ajaxLogin
 *  prihlasi uzivatele vraci true pri prihlaseni, false pri neuspechu 
 */ 
function ajaxLogin(url, elForm, elErr, errMsg)
{
  $('#'+elErr).hide();
  
  $.post(
    url,
    $(elForm).serialize(),
    function(data) {
      if(data.toString()=='true') 
      {
        elForm.submit();
        return true;
      }
      else 
      {
        $('#'+elErr).html(errMsg).show();
        return false;
      }
    },
    'text'
  );

  return false;
}


/** jqueryShowHide
 *  zobrazi / skryje element
 */ 
function jqShowHide(idElement)
{
  if($('#'+idElement).is(':visible')) 
    $('#'+idElement).hide(); 
  else 
    $('#'+idElement).show();
}

function jqShow(idElement)
{
  $('#'+idElement).show();
}

/** jqueryShowHide
 *  zobrazi / skryje element
 */ 
function jqShowHideSwap(idElement, idElement2)
{
  if($('#'+idElement).is(':visible')) 
  {
    $('#'+idElement).hide('slow');
    $('#'+idElement2).show('slow'); 
  }
  else
  { 
    $('#'+idElement2).hide('slow');
    $('#'+idElement).show('slow');
  }
}
/** jqueryShowHide
 *  zobrazi / skryje element
 */  
//function jqShowHide(idElement, idElement2)
function jqueryShow2Hide(idElement, idElement2)
{
    $('#'+idElement2).hide('slow');
    $('#'+idElement).show('slow');
}

/** addBookmark
 *  Prida zalozku
 */  
function addBookmark() {
	if (!url) {var url = window.location}
	if (!title) {var title = document.title}
	var browser=navigator.userAgent.toLowerCase();
	if (window.sidebar) { // Mozilla, Firefox, Netscape
		window.sidebar.addPanel(title, url,"");
	} else if( window.external) { // IE or chrome
		if (browser.indexOf('chrome')==-1){ // ie
			window.external.AddFavorite( url, title); 
		} else { // chrome
			alert('Please Press CTRL+D (or Command+D for macs) to bookmark this page');
		}
	}
	else if(window.opera && window.print) { // Opera - automatically adds to sidebar if rel=sidebar in the tag
		return true;
	}
	else if (browser.indexOf('konqueror')!=-1) { // Konqueror
		alert('Please press CTRL+B to bookmark this page.');
	}
	else if (browser.indexOf('webkit')!=-1){ // safari
		alert('Please press CTRL+B (or Command+D for macs) to bookmark this page.');
	} else {
		alert('Your browser cannot add bookmarks using this link. Please add this link manually.')
	}
}

function isNumber_N(num) {
 
  var strnum = num.toString();
  
  if(strnum.length==0) return false;
  
  for(var i=0; i<strnum.length; i++) {
  
    if( (i==0 && (strnum[i]<'1' || strnum[i]>'9'))  
          || (i>0 && (strnum[i]<'0' || strnum[i]>'9'))) {      
      return false;      
    }
  }
  
  return true;
}

function isPosInt(val) {
  
  for(var i=0; i<val.length; i++) {
    if(val[i] < '0' || val[i]>'9')
      return false;
  }
  
  return true;
}

function getKeypressedKey(e)
{
  var keynum

  if(window.event) // IE
  {
    keynum = e.keyCode
  }
  else if(e.which) // Netscape/Firefox/Opera
  {
    keynum = e.which
  }
  
  return keynum;
}
