/**************************
* 
* Andchir - wdevblog.net.ru
* Shopkeeper 0.7.1 - shopping cart
* 
**************************/

var helper = '<div id="stuffHelper"><center><div id="stuffHelperName"><b></b></div>';
helper += '<div>'+langTxt['count']+' <input type="text" size="2" id="stuffCount" name="count" value="1" maxlength="3" onkeypress="return checkKey(event)"/>';
helper += '<img class="field-arr-up" src="assets/snippets/shopkeeper/img/arr_up.gif" width="17" height="9" alt="" onclick="changeCount(\'stuffCount\',1)" />';
helper += '<img class="field-arr-down" src="assets/snippets/shopkeeper/img/arr_down.gif" width="17" height="9" alt="" onclick="changeCount(\'stuffCount\',2)" />';
helper += '</div><div><button id="confirmButton">'+langTxt['continue']+'</button> ';
helper += '<button onclick="$(\'#stuffHelper\').fadeOut(300,function(){$(this).remove()});return false">'+langTxt['cancel']+'</button></div></center></div>';


if (navigator.cookieEnabled==false){
  alert(langTxt['cookieError']);
}

function checkKey(e){
  var key_code = e.which ? e.which : e.keyCode;
  if((key_code>47&&key_code<58)||key_code==8){
    return true;
  }else{
    return false;
  }
}

function getPosition(el){
	var p = { x: el.offsetLeft, y: el.offsetTop };
	while (el.offsetParent){
		el = el.offsetParent;
		p.x += el.offsetLeft;
		p.y += el.offsetTop;
		if (el != document.body && el != document.documentElement){
			p.x -= el.scrollLeft;
			p.y -= el.scrollTop;
		}
	}
	return p;
}

function getCenterPos(elA,elB){
  posB = new Object();
  cntPos = new Object();
  posB = getPosition(elB);
  var correct;
  
  cntPos.y = Math.round(($(elB).outerHeight()-$(elA).outerHeight())/2)+posB.y;
  cntPos.x = Math.round(($(elB).outerWidth()-$(elA).outerWidth())/2)+posB.x;
  
  if(cntPos.x+$(elA).outerWidth()>$(window).width()){
    cntPos.x = Math.round($(window).width()-$(elA).outerWidth())-2;
  }
  if(cntPos.x<0){
    cntPos.x = 2;
  }
    
  return cntPos;
}


function stringToArray(str){
  curArray = new Array();
  if (str!=null){
    dataArray = str.split(';');
  
    for(var i=0;i<dataArray.length;i++){
      curArray[i] = dataArray[i].split(',');
    }
  }
  return curArray;
}


function changeCount(fieldid,action){
  if(action==1){
    var num = parseInt($('#'+fieldid).attr('value'))+1;
  }else{
    var num = parseInt($('#'+fieldid).attr('value'))-1;
  }
  if(num>=1){
    $('#'+fieldid).val(num);
  }
}


function deleteItem(num,el){
  $('#stuffHelper').remove();
  $('body').append(helper);

  elHelper = document.getElementById('stuffHelper');
  boxPos = getCenterPos(elHelper,el);
  
  $('b','#stuffHelperName').text(langTxt['confirm']);
  $('div:eq(1)','#stuffHelper').remove();
  $('#confirmButton').text(langTxt['yes']).click(function(){
  
    if(num!='all'){
    stuffArray = new Array();
    stuffArray = stringToArray($.cookie('stuffAll'));
    var stuffString = '';
    if(stuffArray.length==1){
      emptyCart();
    }else{
    for(var i=0;i<stuffArray.length;i++){
      if(i!=num){
        if(stuffString==''){
          stuffString = stuffArray[i][0]+','+stuffArray[i][1]+','+stuffArray[i][2]+','+stuffArray[i][3];
        }else{
          stuffString = stuffString.concat(';'+stuffArray[i][0]+','+stuffArray[i][1]+','+stuffArray[i][2]+','+stuffArray[i][3]);
        }
      }
    }
    $.cookie('stuffAll', stuffString, {expires: 1, path: '/'});
    fillCart($.cookie('stuffAll'));
    }
  }else{
    emptyCart();
  }
  $('#stuffHelper').fadeOut(500).remove();
  
  });
  $('#stuffHelper').css({'top':boxPos.y+'px','left':boxPos.x+'px'}).fadeIn(500);
}


function recountItem(id,el){
  $('#stuffHelper').remove();
  $('body').append(helper);

  elHelper = document.getElementById('stuffHelper');
  boxPos = getCenterPos(elHelper,el);
  
  $('#stuffHelperName').remove();
  $('#stuffCount').val($(el).text());
  $('#stuffHelper').css({'top':boxPos.y+'px','left':boxPos.x-40+'px'}).fadeIn(500);
  
  $('#confirmButton').click(function(){
    var count = $('#stuffCount').val();
    var newcount;
    
    stuffArray = new Array();
    stuffArray = stringToArray($.cookie('stuffAll'));
    var stuffString = '';
    
    for(var i=0;i<stuffArray.length;i++){
      newcount = i==id ? count : stuffArray[i][2];
    
      if(stuffString==''){
        stuffString = stuffArray[i][0]+','+stuffArray[i][1]+','+newcount+','+stuffArray[i][3];
      }else{
        stuffString = stuffString.concat(';'+stuffArray[i][0]+','+stuffArray[i][1]+','+newcount+','+stuffArray[i][3]);
      }
    }
    $.cookie('stuffAll', stuffString, {expires: 1, path: '/'});
    $('#stuffHelper').fadeOut(500);
    fillCart($.cookie('stuffAll'));
  });
}



function fillCart(string){

  if(delItemBut=='img'){
    var delItemButton = '<img src="assets/snippets/shopkeeper/img/delete.gif" border="0" width="17" height="17" alt="'+langTxt['delete']+'" />';
  }else{
    var delItemButton = langTxt['delete'];
  }
  
  stuffArray = new Array();
  stuffArray = stringToArray(string);
  
  if(stuffArray.length>0&&string!=''){
    $('div:gt(0)','#shopCart').remove();
    $('table','#shopCart').remove();
    $('#shopCart').append('<div id="toolsCart" align="right"><a href="#" onclick="deleteItem(\'all\',this);return false">'+langTxt['delAll']+'</a></div>');
  
    var totalPrice = 0;
    var totalItems = 0;
    
    $('#shopCart').append('<table width="100%"></table>');
    for(var i=0;i<stuffArray.length;i++){
      if(cartType=='full'){
        $('table','#shopCart').prepend('<tr class="cart-order"><td width="50%"><b>'+stuffArray[i][1]+'</b></td><td width="30%"><nobr>'+stuffArray[i][3]+' '+currency+'</nobr></td><td width="10%"><nobr> x <a href="#" title="'+langTxt['changeCount']+'" onclick="recountItem('+i+',this);return false">'+stuffArray[i][2]+'</a></nobr></td><td width="10%"><a href="#" title="'+langTxt['delGoods']+'" onclick="deleteItem('+i+',this);return false">'+delItemButton+'</a></td></tr>');
      }
      totalItems += parseInt(stuffArray[i][2]);
      var wordEnd = '';
      if(lang=='ru')wordEnd = wordEndFunc(totalItems);
      totalPrice = totalPrice+(stuffArray[i][2]*stuffArray[i][3]);
    }
    if(cartType=='small'){
      $('table','#shopCart').prepend('<tr class="cart-order"><td width="50%">'+langTxt['select']+'</td><td width="50%"><b>'+totalItems+'</b> '+langTxt['goods']+wordEnd+'</td></tr>');
    }
    
    $('#shopCart').append('<div id="totalCart" align="right">'+langTxt['sumTotal']+' <strong>'+totalPrice+'</strong> '+currency+'</div>');
    if(window.location.href.indexOf(orderFormPage)==-1){
      $('#shopCart').append('<div align="center"><a href="'+orderFormPage+'">'+langTxt['executeOrder']+'</a></div>');
    }
  }
}



function toCart(id,el){
  var name = $('#stuff_'+id+'_name').text();
  var priceStr = $('#stuff_'+id+'_price').text();
  var price = parseFloat(priceStr.replace(',','.'));

  $('#stuffHelper').remove();
  
  $('body').append(helper);
  
  elHelper = document.getElementById('stuffHelper');
  btPos = getCenterPos(elHelper,el);
  
  $('b','#stuffHelperName').text(name);
  $('#stuffHelper').css({'top':btPos.y+'px','left':btPos.x+'px'}).fadeIn(500);
    
  $('#confirmButton').click(function(){
  
    var count = parseInt($('#stuffCount').val());
    var stuffString = id+','+name+','+count+','+price;
  
    if($.cookie('stuffAll')==null||$.cookie('stuffAll')==''){
      $.cookie('stuffAll', stuffString, {expires: 1, path: '/'});
    }else{
      if(goodsGroup=='1'&&($.cookie('stuffAll').indexOf(';'+id)>-1||$.cookie('stuffAll').indexOf(id)==0)){
        groupingGoods(id,count);
      }else{
        $.cookie('stuffAll', $.cookie('stuffAll')+';'+stuffString, {expires: 1, path: '/'});
      }
    }
  
    var cart = document.getElementById('shopCart');
    
    cartPos = getCenterPos(elHelper,cart);
    
    $('#stuffHelper').animate({
        top: cartPos.y+'px',
        left: cartPos.x+'px'
      }).fadeOut(500,function(){
      
      fillCart($.cookie('stuffAll'));
    });
  });
}

function groupingGoods(id,count){
    var newcount;
    
    stuffArray = new Array();
    stuffArray = stringToArray($.cookie('stuffAll'));
    var stuffString = '';
    
    for(var i=0;i<stuffArray.length;i++){
      newcount = stuffArray[i][0]==id ? count+parseInt(stuffArray[i][2]) : stuffArray[i][2];
    
      if(stuffString==''){
        stuffString = stuffArray[i][0]+','+stuffArray[i][1]+','+newcount+','+stuffArray[i][3];
      }else{
        stuffString = stuffString.concat(';'+stuffArray[i][0]+','+stuffArray[i][1]+','+newcount+','+stuffArray[i][3]);
      }
    }
    $.cookie('stuffAll', stuffString, {expires: 1, path: '/'});
}

function emptyCart(){
  $.cookie('stuffAll', '', {expires: 1, path: '/'});
  $.cookie('stuffAll', null);
  $('div:gt(0)','#shopCart').remove();
  $('table','#shopCart').remove();
  $('#shopCart').append('<div id="cartEmpty" align="center">'+langTxt['empty']+'</div>');
}


$(document).ready(function() {
  if(window.location.href.indexOf(gotoid)>-1){
    $.cookie('stuffAll', '', {expires: 1, path: '/'});
    $.cookie('stuffAll', null);
  }else{
    if($.cookie('stuffAll')!=null){
      fillCart($.cookie('stuffAll'));
    }
  }
});
