﻿var checkEmail = function(value){
	return (/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test(value));
}

var checkNwsUnsubForm = function(){
	if(Ext.fly('email').dom.value == ''){
		alert('Unesite E-mail!');
		Ext.fly('email').dom.focus();
		return false;
	}else if(!checkEmail(Ext.fly('email').dom.value)) {
		alert('Unesite ispravan E-mail!');
		Ext.fly('email').dom.focus();
		Ext.fly('email').dom.select();
		return false;
	}
	return true;
}

var checkNwsSubForm = function(){
	if(Ext.fly('firstName').dom.value == ''){
		alert('Unesite ime!');
		Ext.fly('firstName').dom.focus();
		return false;
	}else if(Ext.fly('lastName').dom.value == ''){
		alert('Unesite prezime!');
		Ext.fly('lastName').dom.focus();
		return false;
	}else if(Ext.fly('email').dom.value == ''){
		alert('Unesite E-mail!');
		Ext.fly('email').dom.focus();
		return false;
	}else if(!checkEmail(Ext.fly('email').dom.value)) {
		alert('Unesite ispravan E-mail!');
		Ext.fly('email').dom.focus();
		Ext.fly('email').dom.select();
		return false;
	}
	return true;
}

var checkContactForm = function(){
	if(Ext.fly('captchaCode').dom.value == ''){
		alert('Unesite kontrolni kod!');
		Ext.fly('captchaCode').dom.focus();
		return false;
	}else if(Ext.fly('firstName').dom.value == ''){
		alert('Unesite ime!');
		Ext.fly('firstName').dom.focus();
		return false;
	}else if(Ext.fly('lastName').dom.value == ''){
		alert('Unesite prezime!');
		Ext.fly('lastName').dom.focus();
		return false;
	}else if(Ext.fly('email').dom.value == ''){
		alert('Unesite E-mail!');
		Ext.fly('email').dom.focus();
		return false;
	}else if(!checkEmail(Ext.fly('email').dom.value)) {
		alert('Unesite ispravan E-mail!');
		Ext.fly('email').dom.focus();
		Ext.fly('email').dom.select();
		return false;
	}else if(Ext.fly('subject').dom.value == '') {
		alert('Unesite naslov poruke!');
		Ext.fly('subject').dom.focus();
		return false;
	}else if(Ext.fly('content').dom.value == '') {
		alert('Unesite sadržaj poruke!');
		Ext.fly('content').dom.focus();
		return false;
	}
	return true;
}

var checkSendFrendForm = function(){
	if(Ext.fly('captchaCode').dom.value == ''){
		alert('Unesite kontrolni kod!');
		Ext.fly('captchaCode').dom.focus();
		return false;
	}else if(Ext.fly('firstName').dom.value == ''){
		alert('Unesite ime!');
		Ext.fly('firstName').dom.focus();
		return false;
	}else if(Ext.fly('lastName').dom.value == ''){
		alert('Unesite prezime!');
		Ext.fly('lastName').dom.focus();
		return false;
	}else if(Ext.fly('senderEmail').dom.value == ''){
		alert('Unesite E-mail pošiljatelja!');
		Ext.fly('senderEmail').dom.focus();
		return false;
	}else if(!checkEmail(Ext.fly('senderEmail').dom.value)) {
		alert('Unesite ispravan E-mail pošiljatelja!');
		Ext.fly('senderEmail').dom.focus();
		Ext.fly('senderEmail').dom.select();
		return false;
	}else if(Ext.fly('recieverEmail').dom.value == ''){
		alert('Unesite E-mail primatelja!');
		Ext.fly('recieverEmail').dom.focus();
		return false;
	}else if(!checkEmail(Ext.fly('recieverEmail').dom.value)) {
		alert('Unesite ispravan E-mail primatelja!');
		Ext.fly('recieverEmail').dom.focus();
		Ext.fly('recieverEmail').dom.select();
		return false;
	}
	return true;
}

var WSPCaptcha = function(){
	var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
	var captchaSkinId = 978;
	var wsp_key_length = 32;
	var wsp_key = '';
	for (var i=0; i<wsp_key_length; i++) {
		var rnum = Math.floor(Math.random() * (chars.length-1));
		wsp_key += chars.substring(rnum, (rnum + 1));
	}
	Ext.fly('captchaImg').dom.src = 'http://webspamprotect.com/captcha.php?id=' + captchaSkinId + '&key=' + wsp_key;
	Ext.fly('captchaKey').dom.value = wsp_key;
}

var printWindow = function(t){
	var travelLineDet = t ? Ext.fly(t).hasClass('lineDet') : false,
	src = !travelLineDet ? '?print=y&' + (document.location.search.length > 0 ? document.location.search.substring(1) : '') : '?print=y&' + t.search.substring(1);
	hs.htmlExpand(
		null,
		{
			width:650,
			outlineType: 'rounded-white', 
			wrapperClassName: 'draggable-header', 	
			headingText: travelLineDet ? 'Detalji linije' : 'Print',
			objectType: 'iframe',
			src:src,
			align:'center',
			numberPosition:null
		}
	);
	return false;
}

Ext.onReady(function() {
	// top menu control
	if(Ext.fly('topMenu')){
		var topMenu = new Ext.ux.Menu('topMenu', {transitionType: 'slide'});
		topMenu.el.setStyle(
			{
				position:'',
				visibility:'',
				display:''
			}
		);
	}
	// vertical text scroller widget
	if(Ext.fly('verTextScroller')){
		new ABCS.Carousel('verTextScroller', {
			transitionType:'scroll-top',
			itemSelector:'div',
			interval: 0.03,
			initDelay:2,
			pauseOnHover:true
		});
	}
	// image slider widget
	if(Ext.fly('imgSliderTop')){
		new ABCS.Carousel('imgSliderTop', {
			interval: 8,
			transitionSpeed: 0.5,
			initDelay:5
		});
	}
	if(Ext.fly('homeImgSlider')){
		new ABCS.Carousel('homeImgSlider', {
			interval: 8,
			transitionSpeed: 1,
			initDelay:5
		});
	}
	// foto album slider widget
	if(Ext.fly('fotoAlbumSlider')){
		new ABCS.Carousel('fotoAlbumSlider', {
			transitionType: 'fade',
			itemSelector:'div',
			interval: 7,
			transitionSpeed: .8,
			initDelay:5
		});
	}
	// foto album tree
	if(Ext.fly('foto-root')){
		var treeExpanders = Ext.get('foto-root').select('li:has(ul) > table img.expander');
		if(treeExpanders.elements.length > 0){
			treeExpanders.on('click', function(e, t){
				var t = Ext.get(t), childUL = t.findParentNode('li', 5, true).child('ul:first'),
				cfg = {
					useDisplay: true, 
					easing:'easeNone', 
					duration:.2,
					callback:function(hider){
						if(t.hasClass('opened')){
							t.replaceClass('opened', 'closed')
						}else if(t.hasClass('opened-hover')){
							t.replaceClass('opened-hover', 'closed-hover');
						}
						else if(t.hasClass('closed')){
							t.replaceClass('closed', 'opened');
						}else if(t.hasClass('closed-hover')){
							t.replaceClass('closed-hover', 'opened-hover');
						}
					}
				};
				if(childUL.isVisible()){
					childUL.slideOut('t', cfg);
				}else{
					var openedSibling =  childUL.parent().parent().child('>li > ul{display!=none}');
					if(openedSibling){
						openedSibling.slideOut('t', {
							useDisplay: true, 
							easing:'easeNone', 
							duration:.2,
							callback:function(hider){
								var expander = hider.parent().child('>table td > img.expander');
								if(expander.hasClass('opened')){
									expander.replaceClass('opened', 'closed')
								}else if(expander.hasClass('opened-hover')){
									expander.replaceClass('opened-hover', 'closed-hover');
								}
								childUL.slideIn('t', cfg);
							}
						});
					}else{
						childUL.slideIn('t', cfg);
					}
				}
			}).hover(
				function(e, t){
					t = Ext.fly(t);
					if(t.hasClass('opened')){
						t.replaceClass('opened', 'opened-hover');
					}else{
						t.replaceClass('closed', 'closed-hover');
					}
				},
				function(e, t){
					t = Ext.fly(t);
					if(t.hasClass('opened-hover')){
						t.replaceClass('opened-hover', 'opened');
					}else{
						t.replaceClass('closed-hover', 'closed');
					}
				}
			);
			
		}else{
			delete(treeExpanders);
		}
	}
	// captcha image loader
	if(Ext.fly('captchaImg')){
		WSPCaptcha();
	}
	// print hight-slide window control event
	hs.Expander.prototype.onAfterExpand = function (sender) {
	   if(sender.headingText == 'Print'){
			(
				function(){
					window.frames[sender.iframe.name].focus();
					window.frames[sender.iframe.name].print();
					sender.close();
				}
			).defer(500);
	   }
	}
});

function resRowHover(row){
	row = Ext.get(row);
	row.hasClass('resRowOver') ? row.removeClass('resRowOver') : row.addClass('resRowOver');
}
 
//// jQuery 
$().ready(function() {
	// jQuery autocomplete
	$("#departure").autocomplete(
		'service.php?task=travel',
		{
			mustMatch:true,
			parse:function(data){
				var rows = new Array();
				for(var i=0; i<data.length; i++){
					rows[i] = { data:data[i], value:data[i].id, result:data[i].title };
				}
				return rows;
			},
			formatItem: function(row, i, max) {
				return  row.title;
			},
			formatMatch: function(row, i, max) {
				return row.title;
			},
			formatResult: function(row) {
				return row.title;
			}
		}
	).result(function(event, item){
		var v = item ? item.id : '';
		$("#destination").setOptions({extraParams:{departureId:v}});
		$("#departureId").val(v);
	}).blur(function(){
		$(this).search();
	});
	
	
	$("#destination").autocomplete(
		'service.php?task=travel',
		{
			mustMatch:true,
			parse:function(data){
				var rows = new Array();
				for(var i=0; i<data.length; i++){
					rows[i] = { data:data[i], value:data[i].id, result:data[i].title };
				}
				return rows;
			},
			formatItem: function(row, i, max) {
				return  row.title;
			},
			formatMatch: function(row, i, max) {
				return row.title;
			},
			formatResult: function(row) {
				return row.title;
			}
		}
	).result(function(event, item){
		var v = item ? item.id : '';
		$("#departure").setOptions({extraParams:{destinationId:v}});
		$("#destinationId").val(v);
	}).blur(function(){
		$(this).search();
	});
	
	//Zebra datepicker control
	$("#datepickerZ").Zebra_DatePicker({
        direction: true,
		format: 'd.m.Y',
		days:['Nedjelja', 'Ponedjeljak', 'Utorak', 'Srijeda', 'Četvrtak', 'Petak', 'Subota'],
		months:['Siječanj', 'Veljača', 'Ožujak', 'Travanj', 'Svibanj', 'Lipanj', 'Srpanj', 'Kolovoz', 'Rujan', 'Listopad', 'Studeni', 'Prosinac']
    });
	
	var processTravelLineResult = function(response, opt){
		var data = Ext.decode(response.responseText), tbody = Ext.get('searchResults').child('tbody'), html='';
		tbody.select('>tr:not(:first-child)').remove();
		if(data && data.length > 0){
			Ext.each(data, function(item){
				templateSR.append(tbody, item);
			});
		}else{
			Ext.DomHelper.insertHtml('beforeEnd',tbody.dom,
				'<tr><td colspan="8" style="text-align:center; color:red;padding:20px;"> Po unešenim kriterijima nije pronađena ni jedna linija.<br>Pokušajte sa drugim datumom!</td><tr>'
			);
		}
	},
	templateSR = new Ext.Template(
		'<tr onmouseout="resRowHover(this);" onmouseover="resRowHover(this);" class="">',
			'<th style="width:50px;text-align:center;padding:2px;">{departureTime}<th>',
			'<th style="width:145px;text-align:left;padding:2px;">{depSettlement}</th>',
			'<th style="width:50px;text-align:center;padding:2px;">{arrivalTime}</th>',
			'<th style="width:145px;text-align:left;padding:2px;">{destSettlement}</th>',
			'<th style="width:65px;text-align:right;padding:2px;">{km}</th>',
			'<th style="width:65px;text-align:right;padding:2px;">{price}</th>',
			'<th style="width:75px;text-align:center;padding:2px;font-size:9px">{daysOfTraveling}</th>',
			'<th style="width:200px;text-align:left;padding:2px;"><a class="lineDet" href="?task=travel&stask=line&stl=y&lid={tlId}" onclick="return printWindow(this);">{line}</a></th>',
		'</tr>',
		{
			compiled: true,
			disableFormats: true 
		}
	);
	
	if(Ext.fly('travelSearch')){
		Ext.fly('travelSearch').on('click', function(e,t){
			var departure = Ext.get('departure').dom.value,
			destination = Ext.get('destination').dom.value,
			departureId = Ext.get('departureId').dom,
			destinationId = Ext.get('destinationId').dom,
			date = Ext.get('datepickerZ').dom.value;
			if(departure == ''){departureId.value = ''};
			if(destination == ''){destinationId.value = ''};
			
			if(departureId.value != '' && destinationId.value !='' && date!=''){
				Ext.Ajax.request({
					url: 'service.php',
					method:'POST',
					success: processTravelLineResult,
					failure: function(response){alert('Server Error!!!')},
					params: { 
						task: 'travel',
						stask: 'lines',
						departureId: departureId.value,
						destinationId:destinationId.value,
						date:date,
						currentDate: Math.round(new Date().getTime()/1000)
					}
				});
			}else{
				if(departureId.value == ''){
					alert('Izaberite polazište!');
				}else if(destinationId.value == ''){
					alert('Izaberite odredište!');
				}else if(date ==''){
					alert('Izaberite datum!');
				}
			}
		});
	}
	
	
});

