/**
 * @author Journey Planner code
 */
                        function updateLinked()
                        { 
                                setVisualDate(this);
                        } 

                        function setVisualDate(input)
                        {
                                                        var tempDate = $("#" + input.id).val();
                                                        $("#" + input.id + "Visual").val(tempDate);
                        }
                        
                        var DOMAIN_NAME = "http://ticketapp.ibooking.com";
                        var ID_PROV = 3355;

                        function loadLeavingPoints()
                        {
								
                                $.ajax({
                                                url: (DOMAIN_NAME + "/formssupport/api.asmx/GetLeavingPoints?format=json"),
                                                data : { "idProv" : ID_PROV, "idAffiliate" : "0", "idJourney" : "0", "lng" : JSON.stringify("english") },
                                                dataType: "jsonp",
                                                success: loadLeavingPointsResponse,
                                                error: AjaxFailed
                                                })
                        }
                        
                        function loadLeavingPointsResponse(result)
                        {
                                var points = eval('(' + result["d"] + ')');
                                
                                var flag = false;
                                var options = new Array();
                                
                                for (var counter = 0; counter  < points.length; counter++)
                                {
                                        if (points[counter].IdPoint.indexOf("**") >= 0)
                                        {
                                                points[counter].IdPoint = points[counter].IdPoint.substring(2, points[counter].IdPoint.length);
                                        
                                                if (points[counter].IdPoint != 0 || flag)
                                                {
                                                        options.push(new ListItem("-1", points[counter].Name));
                                                        flag = true;
                                                }
                                        }
                                        else
                                        {
                                                options.push(new ListItem(points[counter].IdPoint, points[counter].Name));
                                        }
                                }
                                
                                setupSelect($("#leavingPoint").get(0), options);
                                
                                onLeavingPointUpdate($("#leavingPoint").get(0));
                        }
                        
                        function onLeavingPointUpdate(leavingPointsSelect)
                        {
                                var idLeaving = leavingPointsSelect[leavingPointsSelect.selectedIndex].value;
                        
                                $.ajax({
                                                url: (DOMAIN_NAME + "/formssupport/api.asmx/getRouteDetails?format=json"),
                                                data: { "idProv" : ID_PROV, "idLeaving" : idLeaving, "idAffiliate" : "0", "idAdditionalJourney" : "0", "lng" : JSON.stringify("english") },
                                                dataType: "jsonp",
                                                success: loadRouteDetailsResponse,
                                                error: AjaxFailed
                                                })
                        }
                        
                        function loadRouteDetailsResponse(result)
                        {
                                var routes = eval('(' + result["d"] + ')');
                                
                                var leavingPointSelect = $("#leavingPoint").get(0);
                                var idLeaving = leavingPointSelect[leavingPointSelect.selectedIndex].value;
                                
                                for (var counter = 0; counter < routes.length; counter++)
                                {
                                        if (routes[counter].Key == idLeaving)
                                        {
                                                var routesData = routes[counter].Value;
                                                
                                                var routeOptions = new Array();
                                                
                                                for (var counter2 = 0; counter2 < routesData.length; counter2++)
                                                {
                                                        routeOptions.push(new ListItem(routesData[counter2].CompositeRouteId, routesData[counter2].PointTo.Name));
                                                }
                                                
                                                break;
                                        }
                                }
                                
                                setupSelect($("#routes").get(0), routeOptions);
                                
                                onRouteUpdate($("#routes").get(0));
                        }
                        
                        function onRouteUpdate(routesSelect)
                        {
                                var idCurrentRoute = routesSelect[routesSelect.selectedIndex].value;
                                var idRoute = idCurrentRoute.split("_")[0];
                                
                                $.ajax({
                                                url: (DOMAIN_NAME + "/formssupport/api.asmx/GetJourneyTypes?format=json"),
                                                data: { "idRouteChosen" : idRoute,  "lng" : JSON.stringify("english") },
                                                dataType: "jsonp",
                                                success: loadJourneyTypeDetailsResponse,
                                                error: AjaxFailed
                                                })
                        }
                        
                        function loadJourneyTypeDetailsResponse(result)
                        {
							
                            var radios = $('input[name=\'journeyType\']', '#mainForm');
                            
                            var datesChosen = new Object();
							
							var SiteUrl = $('#BaseUrl').text();
                            
                            for (var counter = 0; counter < radios.length; counter++)
                            {
                                datesChosen[radios[counter].value] = $("#returnDate" + radios[counter].value).val();
                            }
                                            
                            var journeyTypes = eval('(' + result["d"] + ')');
                            var journeyTypesTable = $("#journeyTypesContainer").get(0);
                                                            
                            var journeyTypeChecked = $('input[name=\'journeyType\']:checked', '#mainForm').val();
                            var journeyTypeSet = false;
                                                            
                            $("#journeyTypesContainer").html("");

                            for (var counter = 0; counter < journeyTypes.length; counter++)
                            {
                                var tr = journeyTypesTable.insertRow(-1);
                                var td = tr.insertCell(-1);
                                td.className = "leftColumn";

                                var radioHTML = "<input type=\"radio\" name=\"journeyType\" onclick=\"updateReturnDatesVisibility(" + journeyTypes[counter].IdJourneyType + ", " + journeyTypes[counter].Type + ")\" value=\"" + journeyTypes[counter].IdJourneyType + "\" id=\"" + "journeyType" + journeyTypes[counter].IdJourneyType + "\"";

                                if (journeyTypes[counter].IdJourneyType == journeyTypeChecked)
                                {
                                    radioHTML += "checked=\"checked\"";

                                    journeyTypeSet = true;
                                }
                                
                                radioHTML += " />";

                                td.innerHTML = radioHTML;
                                td.appendChild(document.createTextNode(" "));
                                td.appendChild(document.createTextNode(journeyTypes[counter].Name));
                                
                                var td = tr.insertCell(-1);
                                td.className = "rightColumn";
                                   
                                if (journeyTypes[counter].Type == 2)
                                {
                                    var returnDateContainer = document.createElement("div");
                                    returnDateContainer.id = "returnDateContainer-" + journeyTypes[counter].IdJourneyType;
                                    returnDateContainer.style.display = "none";

                                    var visualInput = document.createElement("input");
                                    visualInput.type = "text";
                                    visualInput.id = "returnDate" + journeyTypes[counter].IdJourneyType + "Visual";
                                    visualInput.name = visualInput.id;
                                    visualInput.className = "datePickerSelect";
                                    returnDateContainer.appendChild(visualInput);
                            
                                    var input = document.createElement("input");
                                    input.type = "hidden";
                                    input.id = "returnDate" + journeyTypes[counter].IdJourneyType;
                                    input.name = input.id;
                                    
                                    returnDateContainer.appendChild(input);
                                    td.appendChild(returnDateContainer);
									
                                    $("#" + input.id).datepicker({
																	minDate : 0,
                                                                    changeMonth : true,
                                                                    changeYear: true, 
                                                                    dateFormat : 'dd.mm.yy', 
                                                                    defaultDate : +1,
                                                                    mandatory: true,
                                                                    showOn : 'both',
                                                                    onSelect: updateLinked,
                                                                    buttonImage: SiteUrl+'/images/calendar.png',
                                                                    buttonImageOnly: true
                                                                 });
                                                                            
                                    $("#" + visualInput.id).focus(function () {
                                                                                                                                                                    $("#" + input.id).datepicker("show");
                                                                                 $("#" + visualInput.id).blur();
                                                                                 $("#ui-datepicker-div").focus();
                                                                              });
                                                                                                                                                             
                                    if (datesChosen[journeyTypes[counter].IdJourneyType])
                                    {
                                        $("#" + input.id).datepicker("setDate", datesChosen[journeyTypes[counter].IdJourneyType]);
                                    }
                                    else
                                    {
                                        var date = $("#leavingDate").datepicker("getDate");
                                        date = new Date(date.setDate(date.getDate() + 1));
                                        
                                        $("#" + input.id).datepicker("setDate",  makeTwoDigits(date.getDate()) + "." + makeTwoDigits(date.getMonth() + 1) + "." + date.getFullYear());
                                    }

                                    setVisualDate($("#" + input.id).get(0));
                                }
                                else
                                {
                                    td.appendChild(document.createTextNode(" "));
                                }
                            }
                                                            
                            if (!journeyTypeSet)
                            {
                                $("#journeyType" + journeyTypes[0].IdJourneyType).get(0).checked = true;
                            }

                            var journeyTypeSet = $('input[name=\'journeyType\']:checked', '#mainForm').val();

                            var type = 0;

                            for (var counter = 0; counter < journeyTypes.length; counter++)
                            {
                                if (journeyTypes[counter].IdJourneyType == journeyTypeSet)
                                {
                                    type = journeyTypes[counter].Type
                                }
                            }

                            updateReturnDatesVisibility(journeyTypeSet, type);
							
							//fixDisplay();
                        }

                        function updateReturnDatesVisibility(idJourneyType, journeyType)
                        {
                            $("div[id|='returnDateContainer']").hide();

                            if (journeyType == 2)
                            {
                                $("#returnDateContainer-" + idJourneyType).show();
                            }
                        }
                        
                        function makeTwoDigits(inValue)
                        {
                                 var numVal = parseInt(inValue, 10);

                                if (numVal < 10)
                                {
                                        return("0" + numVal);
                                }
                                else
                                {
                                        return numVal;
                                }
                        }
                        
                        function openFE()
                        {
                                var URL = DOMAIN_NAME + "/book.asp?id_prov=" + ID_PROV;
                                
                                var journeyType = $('input[name=\'journeyType\']:checked', '#mainForm').val();
                                                                
                                if ($("#returnDate" + journeyType).val() && formatDate($("#returnDate" + journeyType).val()) < formatDate($("#leavingDate").val()))
                                {
                                        alert("Return Date must be later than Departure Date.");
                                        return;
                                }
                                
                                var parameters = "&route=";
                                parameters += journeyType;
                                parameters += "+";
                                parameters += $("#routes").val().split("_")[0];
                                parameters += "&default_date=" + formatDate($("#leavingDate").val());
                                parameters += "&default_ret_date=" + formatDate($("#returnDate" + journeyType).val());
                                
                                URL += parameters;

                                var newWindow = window.open(URL, "pop","scrollbars=yes,status=yes,menubar=no,toolbar=no,resizeable=no,HEIGHT=" + (screen.height - (screen.height / 6)) + ",WIDTH=620"); 
                        }
						
						function openWP()
                        {

                                //var URL = DOMAIN_NAME + "/book.asp?id_prov=" + ID_PROV;
								var URL = location + "booking?id_prov=" + ID_PROV;
                                
                                var journeyType = $('input[name=\'journeyType\']:checked', '#mainForm').val();
                                                                
                                if ($("#returnDate" + journeyType).val() && formatDate($("#returnDate" + journeyType).val()) < formatDate($("#leavingDate").val()))
                                {
                                        alert("Return Date must be later than Departure Date.");
                                        return;
                                }
                                
                                var parameters = "&route=";
                                parameters += journeyType;
                                parameters += "+";
                                parameters += $("#routes").val().split("_")[0];
                                parameters += "&default_date=" + formatDate($("#leavingDate").val());
                                parameters += "&default_ret_date=" + formatDate($("#returnDate" + journeyType).val());
                                
                                URL += parameters;
                        		//alert(URL);
								window.location = URL;
                                //var newWindow = window.open(URL, "pop","scrollbars=yes,status=yes,menubar=no,toolbar=no,resizeable=no,HEIGHT=" + (screen.height - (screen.height / 6)) + ",WIDTH=620"); 
                        }
                        
                        function formatDate(currentDate)
                        {
                            if (!currentDate)
                            {
                                return "";
                            }
                            
                            var currentDateArray = currentDate.split(".")
                            return currentDateArray[2] + currentDateArray[1] + currentDateArray[0];
                        }
                        
                        function urlencode(str) 
                        {
                                str = escape(str);
                                str = str.replace('+', '%2B');
                                str = str.replace('%20', '+');
                                str = str.replace('*', '%2A');
                                str = str.replace('/', '%2F');
                                str = str.replace('@', '%40');
                                return str;
                        }

                        function AjaxFailed(XMLresult, status, error)
                        {
                                alert("Ajax " + status);
                        }
						
						/*
						 * Bluntworks Mods
						 */
						
						function fixDisplay() { 
							var td = $('#journeyTypesContainer tr td' )
								,lc1,lc2,rc1,rc2
								,nt
								
							$.log(td.html());
							
							td.each(function(i,el){
								$.log(' i : '+i+' el : '+$(el).attr('class'));
							});
							
							
							lc1 = $(td[0]).html(); rc1 = $(td[1]).html(); lc2=$(td[2]).html(); rc2=$(td[3]).html();
							
							
							nt='<ul id="journeyTypesContainer"><li>'+lc1+'</li><li>'+rc1+'</li><li>'+lc2+'</li></ul>';

							
							$('.JPMid ul').remove();
							$('.JPMid').append(nt);	
							
							var date = $("#leavingDate").datepicker("getDate");
                            date = new Date(date.setDate(date.getDate() + 1));
                            $.log('date : '+date); 
							$("#journeyTypesContainer .hasDatepicker").remove();  
							$("#journeyTypesContainer .ui-datepicker-trigger").remove();       
                            
							//$.log($("#journeyTypesContainer .datePickerSelect").attr('id'));
							
							$($('#journeyTypesContainer li input')[0]).attr('checked','checked');
							var SiteUrl = $('#BaseUrl').text();
							
							$('#journeyTypesContainer .datePickerSelect').datepicker({
                                                                    changeMonth : true,
                                                                    changeYear: true, 
                                                                    dateFormat : 'dd.mm.yy', 
                                                                    defaultDate : +1,
                                                                    mandatory: true,
                                                                    showOn : 'both',
                                                                    onSelect: updateLinked,
                                                                    buttonImage: SiteUrl+'/images/calendar.png',
                                                                    buttonImageOnly: true
                                                                 });
							
							$("#journeyTypesContainer .datePickerSelect").datepicker("setDate",  makeTwoDigits(date.getDate()) + "." + makeTwoDigits(date.getMonth() + 1) + "." + date.getFullYear());

							
						}

