/**
 * Glowny plik skryptow js dla instancji
 *
 * @package		Navalha
 * @author		Pawel Rekowski <pawel.rekowski@digate.pl>
 * @copyright	(c) 2011 Digate Interactive
 * @version		1.0
 */

/**
 * <b>changeSizeText</b>
 * Metoda zwiekszajaca lub zmniejszajaca wielkosc czcionki w zaleznosci
 * od zmiennej type: 'up' - zwieksza, 'down' - zmniejsza
 *
 * @param string target Id elementu powiekszanego
 * @param string type	Rodzaj operacji
 */
function changeSizeText(target, size)
{
    if (!document.getElementById)
		return;

        var Element=null;

        Element = document.getElementById(target);
        if (size){
			defaultSize = size;
        } else {
			defaultSize = 12;
		}
        Element.style.fontSize = defaultSize + 'px';
        //Element.className = 'resize-text-block';
}//~ changeSizeText()

/**
 * zwieksza lub zmniejsza rozmiar czcionki dla danego obiektu
 */
var defaultSize = 12;

/**
 * <b>resizeText</b>
 * Metoda zwiekszajaca lub zmniejszajaca wielkosc czcionki w zaleznosci
 * od zmiennej type: 'up' - zwieksza, 'down' - zmniejsza
 *
 * @param string target Id elementu powiekszanego
 * @param string type	Rodzaj operacji
 */
function resizeText(target, type)
{
    if (!document.getElementById)
		return;
	
        var Element=null;
		
        Element = document.getElementById(target);
        if (Element!=null){
            if (type=='up') {
                defaultSize++;
            } else if (type=='down') {
                 defaultSize--;
            } else {
                defaultSize = 12;
            }
        }
        Element.style.fontSize = defaultSize + 'px';
        //Element.className = 'resize-text-block';
        $(Element).addClass('resize-text-block');
}//~ resizeText()

/**
 * <b>printText</b>
 * Metoda zwiekszajaca lub zmniejszajaca wielkosc czcionki w zaleznosci
 * od zmiennej type: 'up' - zwieksza, 'down' - zmniejsza
 */
function printText(target, titleBlock, style)
{
	var div = document.getElementById(target), okno, htmlPop;
	var title = document.getElementById(titleBlock).innerHTML;
	okno = window.open("", "nowe", "toolbar=0, location=0, resizable=1, directories=0, status=1, menubar=1, scrollbars=1, height=800, width=700, top=80, left=350");

	var html = div.innerHTML;

	htmlPop = '<html><head><meta http-equiv="Content-type" content="text/html; charset=UTF-8" /><title>'+title+'</title><style type="text/css">'+ decodeBase64(style)+'</style></head><body><h1>'+title+'</h1><br />'+html+'<!--<div><a href="javascript:window.print();" title="Drukuj">Drukuj</a></div>--></body></html>';
	
        turnOffDivs();
        
	okno.document.write(htmlPop);
	okno.focus();
	okno.print();
	okno.close();
	return true;
}//~ printText()


    var aDivsToTurnOff = [ '.det', '.notice', '.visible' ];

/**
 * wylacza wyswietlanie divow na wydruku
 */
function turnOffDivs()
{
    jQuery.each(aDivsToTurnOff, function() {
          $(''+this+'').css('visibility','hidden');
        });

}
/**
 * wlacza wyswietlanie divow
 */
function turnOnDivs()
{
    jQuery.each(aDivsToTurnOff, function() {
          $(''+this+'').css('visibility','visible');
        });

}

var END_OF_INPUT = -1;

var base64Chars = new Array(
    'A','B','C','D','E','F','G','H',
    'I','J','K','L','M','N','O','P',
    'Q','R','S','T','U','V','W','X',
    'Y','Z','a','b','c','d','e','f',
    'g','h','i','j','k','l','m','n',
    'o','p','q','r','s','t','u','v',
    'w','x','y','z','0','1','2','3',
    '4','5','6','7','8','9','+','/'
);

var reverseBase64Chars = new Array();
for (var i=0; i < base64Chars.length; i++){
    reverseBase64Chars[base64Chars[i]] = i;
}

var base64Str;
var base64Count;
function setBase64Str(str){
    base64Str = str;
    base64Count = 0;
}
function readBase64(){
    if (!base64Str) return END_OF_INPUT;
    if (base64Count >= base64Str.length) return END_OF_INPUT;
    var c = base64Str.charCodeAt(base64Count) & 0xff;
    base64Count++;
    return c;
}
function encodeBase64(str){
    setBase64Str(str);
    var result = '';
    var inBuffer = new Array(3);
    var lineCount = 0;
    var done = false;
    while (!done && (inBuffer[0] = readBase64()) != END_OF_INPUT){
        inBuffer[1] = readBase64();
        inBuffer[2] = readBase64();
        result += (base64Chars[ inBuffer[0] >> 2 ]);
        if (inBuffer[1] != END_OF_INPUT){
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30) | (inBuffer[1] >> 4) ]);
            if (inBuffer[2] != END_OF_INPUT){
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c) | (inBuffer[2] >> 6) ]);
                result += (base64Chars [inBuffer[2] & 0x3F]);
            } else {
                result += (base64Chars [((inBuffer[1] << 2) & 0x3c)]);
                result += ('=');
                done = true;
            }
        } else {
            result += (base64Chars [(( inBuffer[0] << 4 ) & 0x30)]);
            result += ('=');
            result += ('=');
            done = true;
        }
        lineCount += 4;
        if (lineCount >= 76){
            result += ('\n');
            lineCount = 0;
        }
    }
    return result;
}
function readReverseBase64(){
    if (!base64Str) return END_OF_INPUT;
    while (true){
        if (base64Count >= base64Str.length) return END_OF_INPUT;
        var nextCharacter = base64Str.charAt(base64Count);
        base64Count++;
        if (reverseBase64Chars[nextCharacter]){
            return reverseBase64Chars[nextCharacter];
        }
        if (nextCharacter == 'A') return 0;
    }
    return END_OF_INPUT;
}

function ntos(n){
    n=n.toString(16);
    if (n.length == 1) n="0"+n;
    n="%"+n;
    return unescape(n);
}

function decodeBase64(str){
    setBase64Str(str);
    var result = "";
    var inBuffer = new Array(4);
    var done = false;
    while (!done && (inBuffer[0] = readReverseBase64()) != END_OF_INPUT
        && (inBuffer[1] = readReverseBase64()) != END_OF_INPUT){
        inBuffer[2] = readReverseBase64();
        inBuffer[3] = readReverseBase64();
        result += ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
        if (inBuffer[2] != END_OF_INPUT){
            result +=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
            if (inBuffer[3] != END_OF_INPUT){
                result +=  ntos((((inBuffer[2] << 6)  & 0xff) | inBuffer[3]));
            } else {
                done = true;
            }
        } else {
            done = true;
        }
    }
    return result;
}

/**
 * dodaje maila do newslettera
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function addToNewsletter()
{
    // preloader
     $('#newsletter_info').html('<img src="'+ URL_BASE +'templates_s/images/loading.gif" border="0" style="margin-left: 15px;" >');   
   
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/addToNewsletter",
       data: "email-form=" + $('#email-form').attr('value'),
       success: function(msg){
         $('#newsletter_info').html(msg);
       }
     });
   
    return false;
}

/**
 * wyszukiwarka produktow
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function productsSearch()
{
    // preloader
     $('#middle').html('<img src="'+ URL_BASE +'templates_s/images/loading.gif" border="0" style="margin-left: 270px; margin-top: 200px;" >');   
   
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/productsSearch/get",
       data: "search-form=" + $('#search-form').attr('value'),
       success: function(msg){
        $('#middle').html(msg);
       }
     });
   
    return false;
}


/**
 * dodaje towar do koszyka
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function addToBasket(id)
{
    // pobieramy templatke do forma
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/koszyk/modal",
       data: "product_id=" + id + "&amount=" + $('#qn'+id).attr('value'),
       success: function(msg){
         $('#basket-dialog-form').html(msg);
       }
     });    
    
    // otwieramy modal form
    $( "#basket-dialog-form" ).dialog( "open" );
    
    
    // todo
    var size = 0;
    
    // preloader
    // todo : dac na cala strone 
//     $('.right-col').html('<img src="'+ URL_BASE +'templates_s/images/loading.gif" border="0" style="margin: 10px 0 0 5px;" >');   
//   
//     $.ajax({
//       type: "POST",
//       url: URL_NAVALHA+"/basket/add",
//       data: "product_id=" + id + "&amount=" + $('#qn'+id).attr('value') + "&size" + size,
//       success: function(msg){
//         $('.right-col').html(msg);
//       }
//     });

    return false;
}

/**
 * aktualizuje koszyk
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function refreshTheBasket()
{
    var serializedQns = $('.qn').serializeArray();
    
    $('#act_refresh_preloader').html('<img src="'+ URL_BASE +'templates_s/images/loading.gif" border="0" style="" >');   
	
    // pobieramy templatke do forma
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/koszyk/aktualizuj",
       data: serializedQns,
       success: function(msg){
         $('.middle').html(msg);
	 $('#act_refresh_preloader').html();
	 
	 refreshTheCartView();
       }
     });    

    return false;
}

/**
 * odswieza widok koszyka
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function refreshTheCartView()
{
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/koszyk/odswiez",
       success: function(msg){
	 $('.right-col').html(msg);
       }
     });  

    return false;
}


/**
 * usuwa towar z koszyka
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function removeFromBasket(id)
{
    // pobieramy templatke do forma
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/koszyk/usun",
       data: "product_id=" + id,
       success: function(msg){
         $('.middle').html(msg);
         
         $('.quan').html('');
	 
	 refreshTheCartView();
       }
     });    
    
    return false;
}

/**
 * usuwa wszystkie towary z koszyka
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function cleanTheBasket()
{
    // pobieramy templatke do forma
     $.ajax({
       type: "POST",
       url: URL_NAVALHA+"/koszyk/wyczysc",
       success: function(msg){
         $('.middle').html(msg);         
         $('.quan').html('');
	 
	 refreshTheCartView();
       }
     });    
    
    return false;
}

/**
 * uzytkownik sklada zamowienie
 * @author Tomek Bielawa <tomek.bielawa@digate.pl> \\//
 */
function orderNow()
{

    if( orderFromValidation() == true)
    {
        // pobieramy templatke do forma
         $.ajax({
           type: "POST",
           url: URL_NAVALHA+"/koszyk/zloz_zamowienie",
           data: "delivery_id=" + $('#delivery_id').val()+"&payment_id="+$('#payment_id').val()
               +"&client_name="+$('#client_name').val()
               +"&client_street="+$('#client_street').val()
               +"&client_city="+$('#client_city').val()
               +"&client_postcode="+$('#client_postcode').val()
               +"&client_postoffice="+$('#client_postoffice').val()
               +"&client_email="+$('#client_email').val()
               +"&client_phone="+$('#client_phone').val(),

           success: function(msg){
            $('.middle').html(msg);         
            $('.quan').html('');
           }
         });    
    }

    return false;
}

/**
 * walidacja formularza zamowienia
 * @author     Tomek Bielawa <tomek.bielawa@digate.pl>
 * 
 */
function orderFromValidation()
{       
    bError = 0;
    
    var arr = [ "client_name", "client_street", "client_city", "client_postcode", "client_postoffice", "client_email", "client_phone" ];

    jQuery.each(arr, function() {
    //jQuery.each( $('#orderForm'), function() {
      if($("#" + this).val()=='')
      {
          $("#" + this + "_box .err").removeClass('hidden');
	  $("#" + this + "_box .err").slideDown(400);
          bError++;
      }
      else
      {
          $("#" + this + "_box .err").addClass('hidden');
      }
      
    });
    
      if( email_validate($("#client_email").val()) == false)
      {
          $("#client_email_box .err").removeClass('hidden');
	  $("#client_email_box .err").slideDown(400);
          bError++;
      }
      else
      {
          //$("#client_email_box .err").addClass('hidden');
      }
        
      if( bError > 0){
          return false; 
      }
      else { 
          return true;
      }
}


/**
 * funkcja umozliwia wpisywanie w kontrolkach jedynie znakow zmiennoprzecinkowych (waluta)
 * @author     Tomek Bielawa <tomek.bielawa@digate.pl>
 * 
 * przyklad zastosowania:
 * <input type="text" name="xx" id="cos" onKeyPress="return onlyFloat(event)">
 */
function onlyFloat(event)
{
    if (event.srcElement) {kc = event.keyCode;} else {kc = event.which;}    
    if ((kc < 46 || kc > 57) && kc != 8 && kc != 0) return false;
    return true;
}


/**
 * funkcja umozliwia wpisywanie w kontrolkach jedynie znakow integer
 * @author     Tomek Bielawa <tomek.bielawa@digate.pl>
 * 
 * przyklad zastosowania:
 * <input type="text" name="xx" id="cos" onKeyPress="return onlyInt(event)">
 */
function onlyInt(event)
{
    if (event.srcElement) {kc = event.keyCode;} else {kc = event.which;}    
    if ((kc < 47 || kc > 57) && kc != 8 && kc != 0) return false;
    return true;
}

function email_validate(src) 
{
  var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
  return regex.test(src);
}

function toggleClientType()
{
	if (document.getElementById('client_type'))
	{
		var type = document.getElementById('client_type').value;
		
		switch (type)
		{
			case 'osoba fizyczna':
			{
				document.getElementById('company_client').style.display = 'none';
				
				break;
			};
			
			case 'firma':
			{
				document.getElementById('company_client').style.display = 'block';
							
				break;
			};
		}	
	}
}

