var lang = null;

function init_lang (my_lang) {
	lang = my_lang;
}

function request_view (controller, action, id,  page, bookmark_numb, cart_release) {
	/*
	 * Parameters:
	 *  controller - wywolywany kontroler
	 *  action - wywolywana akcja
	 *  id - id
	 *  cont - div, conterner w ktorym nastpi odswiezenie widoku
	 *  page - strona np w listingu produktu 
	 *  bookmark_numb - nr zakladki
	 */
	
	var url_address = controller +'/' + action;
	if (id) {
		url_address = url_address + '/' + id;
	}
	if (page) {
		url_address = url_address + '/' + page;
	}

	
	new Request.HTML({
		url: url_address,
		method: 'post',
		link: 'cancel',
		update: ($(controller + '_' + action + '_' + id)) ? $(controller + '_' + action + '_' + id) : '',
		onRequest: function(){
/* pokaz przykrywke, jest to bialy div o tle #ffffff o takich samych rozmiarach jak konterner glowny (id="contener")
 * dzieki temu najpierw przykrywa widoku produktu, pojawia sie na nim loader, a pozniej animacyjnie zmieniamy jego
 * alfa na 0. Jesli zmienialibysmy przezroczystosc calego widoku produktow z kodem html to prawdopodobnie bardzo wolno
 * by to chodzilo. */
			var prod_cont ;
			if (prod_cont = $(controller + '_' + action + '_' + id)) {	
				prod_cont.set('html', '&nbsp;');
				product.fadeCoverIn()
				prod_cont.setStyle('display', 'block')				
				$('product_loader').setStyle('visibility', 'visible');//pokaz loader
			}
		},
		
		onSuccess: function(responseTree, responseElements, responseHTML){
/* samo ukrycie wszystkich elementow podczas nowego elementu (widoku) nie wystarczy. W momencie kiedy uzytkownik
/  szybko klikal zdarzalo sie ze dwa widoki na raz bylo aktywne. Dlatego dla bezpieczenstwa po wykonaniu zadania jeszcze raz
/  staramy sie ukryc wszystkie widoki produktow */
			var prod_cont
			if (prod_cont = $(controller + '_' + action + '_' + id)) {
				//product.hideAll();


				
				
				//ustaw rozmiar przykrywki na taka sama wysokosc jak kontener glowny, oraz animacyjnie usun przykrywke
				product.fadeCoverOut();
				$('product_loader').setStyle('visibility', 'hidden');//ukryj loader

				
				if (cart_release) {
					cart.removing_busy = false;
				}
				
			} else {
				product.fadeCoverOut();
				$('product_loader').setStyle('visibility', 'hidden');//pokaz loader							
			}
		}
	}).send()	
}

function send_ask(id){


	var err = 0;
	if ($('handlowiec').value == '') 
		err++;
	if ($('tresc').value == '') 
		err++;
	if ($('email').value == '') 
		err++;
	if ($('name').value == '') 
		err++;
	if($('comments').value == '')
		err++;
	
	if (err == 0) {
		var myHTMLRequest = new Request.HTML({
			url: 'products/ask/' + id,
			onSuccess: function(){
				$('askForm').innerHTML = lang.ok;
			}
		}).post({
			'handlowiec': $('handlowiec').value,
			'tresc': $('tresc').value,
			'email': $('email').value,
			'name': $('name').value,
			'comments' : $('comments').value
		});		
	}
	else {
		$('msg').innerHTML =lang.error;
	}
}

function request_addToCart (id, overlay) {

	
	new Request.HTML ({
		url: 'products/show/' + id,
		method: 'post',
		update: 'cart_cont',
		
		onRequest: function () {			
			overlay.showLoader();	
		},
		
		onSuccess: function () {
			$('cart_cont').getFirst('.product_list_inner').setStyle('padding', 0);
			overlay.hideLoader();
		},
		
		onFailure: function () {
			$('cart_loader').setStyle('visibility', 'hidden');
			$('close_cart').fade('out');			
		}
	}).send()
}


function request_moveToCart (id, price, ilosc_sztuk, is_print, ilosc_kolorow, ilosc_miejsc, mark) {
	var form =  document.calculation;
	
	if (!price) {
		price ='';
	}

	if (!ilosc_sztuk) {
		var ilosc_sztuk = 1//form.sztuki.value; //ilosc sztuk produktu	
	}

	new Request.JSON ({
		url: 'cart/add_product/',
		method: 'post',
		onComplete: function (response) {
			cart.handle_moveToCart(response);
			message.showMessage(response.msg);
		}
		}).send('id=' + id + '&ilosc_sztuk=' + ilosc_sztuk + '&price=' + price + '&is_print=' + is_print + 
		 	    '&ilosc_kolorow=' + ilosc_kolorow + '&ilosc_miejsc=' + ilosc_miejsc + '&mark=' + mark);
}

function request_orderNow (id, price, ilosc_sztuk, is_print, ilosc_kolorow, ilosc_miejsc, mark) {
	var form =  document.calculation;
	
	if (!price) {
		price ='';
	}

	if (!ilosc_sztuk) {
		var ilosc_sztuk = 1//form.sztuki.value; //ilosc sztuk produktu	
	}

	new Request.JSON ({
		url: 'cart/order_now/',
		method: 'post',
		onComplete: function (response) {
			my_bookmarks.createBookmark('cart', 'show', '1', '1', 'koszyk', false);	
			request_view('cart', 'show', '1', '3', '', true);
		}
	}).send('id=' + id + '&ilosc_sztuk=' + ilosc_sztuk + '&price=' + price + '&is_print=' + is_print + 
		 	    '&ilosc_kolorow=' + ilosc_kolorow + '&ilosc_miejsc=' + ilosc_miejsc + '&mark=' + mark);
}

function request_removeFromCart (indx) {
	//sprawdz czy widok koszyka jest aktywny, jesli tak to pokaz maske wczytywanie danych...
	var cart_cont = $('cart' + '_' + 'show' + '_' + 1);
	if (cart_cont) {
	
		if (cart_cont.getStyle('display') == "block") {
			cart_cont.set('html', '&nbsp;');
			product.fadeCoverIn()
			$('product_loader').setStyle('visibility', 'visible');//pokaz loader
		}
	}	
	
	new Request.JSON ({
		url: 'cart/remove_product/',
		method: 'post',
		onComplete: function (response) {
					//jestli jest aktywny widok koszyka (display block)
					
						if (cart_cont && cart_cont.getStyle('display') == "block") {
							request_view('cart', 'show', '1', '', '', true);
						} else {
							cart.removing_busy = false;
						}	
			
			message.showMessage(response.msg);
			cart.update_total_price.pass(response.total_price).run();
			
			

		}
		
	}).send('indx='+indx);
}

/*
 *  Wysyla zadnie i zwraca formularz rejestracyjny
 */

function request_showRegistration (overlay, send_action){

	var action = ''
	switch (send_action) {
		case 1 :
			action = 'registration';
			break;
		case 2 :
			action = 'edit';		
			break;
	}

	new Request.HTML ({
		url: 'user/' + action + '/',
		method: 'post',
		update: 'cart_cont',
		
		onRequest: function () {			
			overlay.showLoader();	
		},
		
		onSuccess: function () {
			overlay.hideLoader();
		},
		
		onFailure: function () {
			
		}
	}).send()	
}


function request_sendRegistration (overlay, send_action) {
	var rForm = document.rForm;

	var action = ''
	switch (send_action) {
		case 1 :
			action =  'registration_send';
			break;
		case 2 :
			action =  'update_profile';
			break;			
	}
	
	
	new Request.JSON ({
		url: 'user/' + action + '/',
		method: 'post',
		
		onRequest: function () {			
			overlay.showLoader();	
		},
		
		onSuccess: function (response) {
			//udalo sie dokonac rejestracji
			if (response.success) {
				registration.closeRegistration();
			} else {
				//wystapil jakis blad po stronie serwera
				overlay.hideLoader();
				registration.unblock_send_button();
			}
			message.showMessage(response.msg);
		},
		
		onFailure: function () {
			
		}
	}).send('login=' + rForm.login.value + "&" +
	        'pass=' + rForm.pass.value + "&" +
			'confirm_pass=' + rForm.pass.value + "&" +
			'name=' + rForm.name.value + "&" +
			'email=' + rForm.email.value + "&" +
			'company=' + rForm.company.value + "&" +
			'nip=' + rForm.nip.value + "&" +
			'street=' +  rForm.street.value + "&" +
			'local=' + rForm.lokal.value + "&" +
			'city=' + rForm.miasto.value + "&" +
			'default_language=' + rForm.language.value + "&" +
			'zip=' + rForm.poczta.value + "&" +
			'phone=' + rForm.phone2.value + "&" +
			'fax=' + rForm.fax.value + "&" +
			'company_phone=' + rForm.phone2.value + "&" +
			'newsletter=' + rForm.newsletter.value + "&" +
			'position=' + rForm.job.value + "&" +
			'www=' + rForm.www.value + "&")	
}

/*
 *  Wysyla zadnie i zwraca formularz edycji profilu
 */

function request_showProfile (overlay){

	new Request.HTML ({
		url: 'user/edit/',
		method: 'post',
		update: 'cart_cont',
		
		onRequest: function () {			
			overlay.showLoader();	
		},
		
		onSuccess: function () {
			overlay.hideLoader();
		},
		
		onFailure: function () {
			
		}
	}).send()	
}


function request_login () {
	var login_in = $('login_input').value;
	var pass_in = $('password_input').value;

	new Request.JSON ({
		url: 'user/login/',
		method: 'post',	
		
		onRequest: function () {			
			login.showLoader();
		},
		
		onSuccess: function (response) {	
			
			if (!response) {
				login.hideLoader();
				login.show_error();			
			} else {
				login.hide_error();	
				window.location = 'index';
			}
			
		},
		onFailure: function () {
			
		}	
	}).send('login=' + login_in + '&pass=' + pass_in);
}


function request_forgot() {
	var login_in = $('login_input_f').value;

	new Request.JSON ({
		url: 'user/forgot/',
		method: 'post',	
		
		onRequest: function () {			
			login.showLoader2();
		},
		
		onSuccess: function (response) {	
			if (response.success == "0") {
				login.hideLoader2();
				login.show_error2();			
			} else {
				login.hide_error2();	
				message.showMessage(response.msg);
				login.hideLoader2();
			}
			
		},
		onFailure: function () {
			
		}	
	}).send('login=' + login_in);
}


function request_logout () {
	new Request.JSON ({
		url: 'user/logout/',
		method: 'post',	
		
		onSuccess: function (response) {	
			
			if (!response) {	
			} else {
				window.location = 'index';
			}
			
		},
		onFailure: function () {
			
		}	
	}).send();	
	
}

// kalkulacja nadrukow produktu
function request_calculate (id, is_print) {
	var form =  $('calc_' + id)

	var ilosc_sztuk = form.sztuki.value; //ilosc sztuk produktu
	var ilosc_miejsc = form.nadruki.value; //ilosc miejsc na nadruki
	var ilosc_kolorow = form.kolory.value; //ilosc kolorow
	var zdobienie = form.mark.value; //technika zdobienia nadruku	
	
	new Request.JSON ({
		url: 'products/calculate',
		method: 'post',
		
		onRequest: function () {
			product.show_calculate_cover (id);
		},
		
		onSuccess: function (response) {
			product.update_calculation (response, is_print);
			
			//ustaw cene ktora pozniej bedzie przeniesiona do koszyka
			cart.setPrice (response.wartosc, ilosc_sztuk, is_print, ilosc_miejsc, ilosc_kolorow, zdobienie)
		},
		
		onFailure: function () {
			
		}
	}).send('id=' + id +
	        '&ilosc_sztuk=' + ilosc_sztuk +
			'&ilosc_miejsc=' + ilosc_miejsc +
			'&ilosc_kolorow=' + ilosc_kolorow +
			'&mark=' + zdobienie +
			'&is_print=' + is_print);
}


// metoda przelicza wszystkie produkty w koszyku w zaleznosci od wpisanych ilosci i zaproponowanych rabatow
function przelicz_request () {
	var rabaty = $$('.rabat');
	var ilosci = $$('.sztuk');
	
	//nadruki
	var miejsca = $$('.c_miejsca')
	var kolory = $$('.c_kolory')	
	var zdobienia = $$('.c_zdobienie')	
	var czy_nadruk = $$('.c_nadruk')		
		
	var param = '';

	rabaty.each (function (el, i) {
		param =  param + 'rabat_' + i + '=' + el.getProperty('value') + '&';
	})
	ilosci.each (function (el, i) {
		param =  param + 'sztuk_' + i + '=' + el.getProperty('value') + '&';
	})
	
	//nadruki
	miejsca.each (function (el, i) {
		param =  param + 'miejsca_' + i + '=' + el.getProperty('value') + '&';
	})	
	kolory.each (function (el, i) {
		param =  param + 'kolory_' + i + '=' + el.getProperty('value') + '&';
	})		
	zdobienia.each (function (el, i) {
		param =  param + 'zdobienie_' + i + '=' + el.getProperty('value') + '&';
	})	
	
	czy_nadruk.each (function (el, i) {
		param =  param + 'nadruk_' + i + '=' + el.checked + '&';
	})	

	new Request.JSON ({ 
		url: 'cart/calculate',
		method: 'post',
		onRequest: function () {
			var cart_cont = $('cart' + '_' + 'show' + '_' + 1);
			if (cart_cont) {
				cart_cont.set('html', '&nbsp;');
				product.fadeCoverIn()
				$('product_loader').setStyle('visibility', 'visible');//pokaz loader

			}				
		},
		onComplete: function (response) {
			//odswiez widok koszyka
			request_view('cart', 'show', 1)		
			//odswiez wszystkie ceny w podrecznym koszyku
			cart.update_cart_prices (response);
		}
	}).send(param);
}

//-- funkcja wysyla zadanie do serwera i usuwa wszystkie produkty z koszyka (czysci caly koszyk)
function request_clear_cart () {
	new Request.JSON ({
		url: 'cart/clear',
		method: 'post',
		onRequest: function () {	
			//sprawdz czy widok koszyka jest aktywny, jesli tak to pokaz maske wczytywanie danych...
			//cart.set_viewcart_mask();			
		},
		onSuccess: function (response) {
			request_view('cart', 'show', '1', '', '', true);
			message.showMessage(response.msg);			
			
		}
	}).send();
}

// funkcja wysyla zapytanie (caly koszyk) do wybranego handlowca
function request_sendQuery (realization_date, handlowiec,order_now, email, text, comm) {
// order_now = jeśli z pominięciem całej procedury koszyka zamawiany odrazu produkt
	if (!email) 
		email = '';
		
	new Request.JSON ({ 
		url: 'cart/send',
		method: 'post',
		onRequest: function(){
			var cart_cont = $('cart' + '_' + 'show' + '_' + 1);
			if (cart_cont) {
				cart_cont.set('html', '&nbsp;');
				product.fadeCoverIn()
				$('product_loader').setStyle('visibility', 'visible');//pokaz loader

			}				
		},
		onSuccess: function(response){		
			//ustaw rozmiar przykrywki na taka sama wysokosc jak kontener glowny, oraz animacyjnie usun przykrywke
			if (response.success) {
				if (!order_now) {
					cart.clear_cart();
				}
				cart.set_order_refresh();
			}
			request_view('cart', 'show', '1', '4', '', true);
			console.log ("A");
			message.showMessage(response.msg);	
		}		
			
	}).send('date=' + realization_date + '&salesman=' + handlowiec + '&order_now=' + order_now + '&email=' + email + '&text=' + text + '&comm=' + comm);	
}


//wysyla wyszukiwanie normalne
function request_normal_search (word) {
	var s;
	if (s = $('search_normal_1')) {
		s.setProperty('class', 'product_view refresh');
	}
}


function request_showAdvancedSearch  (overlay,search){
	search = JSON.encode (search);
	
	new Request.HTML ({
		url: 'search/show_advanced/',
		method: 'post',
		update: 'cart_cont',
		
		onRequest: function () {			
			overlay.showLoader();	
		},
		
		onSuccess: function () {
			overlay.hideLoader();
		},
		
		onFailure: function () {
			
		}
	}).send('search='+search)	
}


function request_advanced_search(controller, action, id, page, search, cc){
	search = JSON.encode (search);

	/*
	 * Parameters:
	 *  controller - wywolywany kontroler
	 *  action - wywolywana akcja
	 *  id - id
	 *  cont - div, conterner w ktorym nastpi odswiezenie widoku
	 *  page - strona np w listingu produktu
	 *  bookmark_numb - nr zakladki
	 */
	var url_address = controller + '/' + action;
	if (id) {
		url_address = url_address + '/' + id;
	}
	if (page) {
		url_address = url_address + '/' + page;
	}
	if (cc) {
		url_address = url_address + '/' + cc;
	}
	
	
	new Request.HTML({
		url: url_address,
		method: 'post',
		link: 'cancel',
		update: ($(controller + '_' + action + '_' + id)) ? $(controller + '_' + action + '_' + id) : '',
		onRequest: function(){
			var prod_cont = $(controller + '_' + action + '_' + id);
			prod_cont.set('html', '&nbsp;');
			
			if (prod_cont) {				
				product.fadeCoverIn()
				prod_cont.setStyle('display', 'block')				
				$('product_loader').setStyle('visibility', 'visible');//pokaz loader
			}
		},
		
		onSuccess: function(responseTree, responseElements, responseHTML){
			var prod_cont

			if (prod_cont = $(controller + '_' + action + '_' + id)) {

				

				my_bookmarks.activate_page("bookmark " + controller, action, id);
				//ustaw rozmiar przykrywki na taka sama wysokosc jak kontener glowny, oraz animacyjnie usun przykrywke
				product.fadeCoverOut();
				$('product_loader').setStyle('visibility', 'hidden');//ukryj loader

				
			}
			else {
				product.fadeCoverOut();
				$('product_loader').setStyle('visibility', 'hidden');//pokaz loader							
			}
		}
	}).send('search='+search)
}


function get_search_normal_tips (keyword) {
	new Request.HTML ({
		url: 'search/get_normal_tips/',
		method: 'post',
		update: $('search_normal_autofill'),
		
		onRequest: function () {			
			
		},
		
		onSuccess: function (a, b, c) {
			my_search.showNormalTips(c);
		},
		
		onFailure: function () {
			
		}
	}).send('keyword='+keyword)	
}


function get_search_adv_tips (keyword) {
	new Request.HTML ({
		url: 'search/get_normal_tips/',
		method: 'post',
		update: $('search_adv_autofill'),
		
		onRequest: function () {			
			
		},
		
		onSuccess: function (a, b, c) {
			my_search.showAdvTips(c);
		},
		
		onFailure: function () {
			
		}
	}).send('keyword='+keyword+'&advanced=true')	
}

function get_search_adv_tips2 (keyword) {
	new Request.HTML ({
		url: 'search/get_normal_tips/',
		method: 'post',
		update: $('search_adv_autofill2'),
		
		onRequest: function () {			
			
		},
		
		onSuccess: function (a, b, c) {
			my_search.showAdvTips2(c);
		},
		
		onFailure: function () {
			
		}
	}).send('keyword='+keyword+'&advanced2=true')	
}



function request_filter (controller, action, id, page, word, filter) { //from products.js
	filter = JSON.encode (filter);

	var url_address = controller + '/' + action;
	if (id) {
		url_address = url_address + '/' + id;
	}
	if (word) {
		url_address = url_address + '/' + word;
	}
	if (page) {
		url_address = url_address + '/' + page;
	}

	
	new Request.HTML({
		url: url_address,
		method: 'post',
		link: 'cancel',
		update: ($(controller + '_' + action + '_' + id)) ? $(controller + '_' + action + '_' + id) : '',
		onRequest: function(){
			
			var prod_cont = $(controller + '_' + action + '_' + id);
			prod_cont.set('html', '&nbsp;');
			
			if (prod_cont) {				
				product.fadeCoverIn()
				prod_cont.setStyle('display', 'block')				
				$('product_loader').setStyle('visibility', 'visible');//pokaz loader
			}
		},
		
		onSuccess: function(responseTree, responseElements, responseHTML){
			var prod_cont

			if (prod_cont = $(controller + '_' + action + '_' + id)) {

				//ustaw rozmiar przykrywki na taka sama wysokosc jak kontener glowny, oraz animacyjnie usun przykrywke
				product.fadeCoverOut();
				$('product_loader').setStyle('visibility', 'hidden');//ukryj loader

				
			}
			else {
				product.fadeCoverOut();
				$('product_loader').setStyle('visibility', 'hidden');//pokaz loader							
			}
		}
	}).send('filter='+filter)
}

