/*
console.time('Cookie');   
console.timeEnd('Cookie');
*/
   
var mdvCookies= new Array();

function MDVCookie(){

}

// creates cookies for odv
MDVCookie.prototype.odvCookies = function(newLength, usage){
    var odv = $("#input_" + usage)[0];
    var getOdvCookie = '';
    var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
    if(document.cookie){   
       getOdvCookie = getCookie(usage); 
       //getOdvCookie = $.cookie(usage);   
    }

    //Cookies for usage
    if(odv.value == "identified" && getOdvCookie.indexOf(odv.name)=='-1'){
        if(getOdvCookie == ""){
            var dollar = "";
        }else{
            var dollar = "$";
        }
        var newOdvCookie = odv.name + dollar +getOdvCookie;
        if(newOdvCookie.indexOf("undefined") != false){
            newOdvCookie = newOdvCookie.replace("undefined", '');
        }
        
        //$.cookie(usage, +"="+ newOdvCookie +"; expires="+ a.toGMTString()+";"); // set cookie
        document.cookie = usage +"="+ newOdvCookie +"; expires="+ a.toGMTString()+";";
    }

    cookieSplit = getCookie(usage).split("$");
    //cookieSplit = $.cookie(usage).split("$");
    
    var rp_odv = $("#rp_" +usage)[0];

    if(isNaN(newLength) && newLength!='-' || newLength == cookieControl){
    
        var control = cookieControl;
        odvControl = control;
        var more = $("#moreCookies")[0];
        if(cookieSplit.length > 0){
            if(cookieSplit.length < odvControl){
                odvControl = cookieSplit.length;
            }
            for(o = 0; o < odvControl; o++){
                var odvValue = cookieSplit[o].split('|');
                var odvID = '\'' + odvValue[1] + '\'';
                var odvName = odvValue[0];
                var trashImg = '<img class="trashOdvImg" name="'+[o]+'" onclick="mdvCookie.deleteOdv(this.name, \''+usage+'\')" src="'+trashPic+'" alt="'+ deleteIt +'"/>';
               
                if(o < odvControl-1){
                    var comma = ", ";
                }else{ //if(o = odvControl-1)
                    var comma = "";
                }
                
                var icon = trashImg + comma;
                var odvLink = '<span id="recentSpan'+usage+'_'+[o]+'"><a class="recentLinks" href="javascript:submitPoint('
                    odvLink+= odvID
                    odvLink+= ', \'' + usage +'\')">'+ odvName+'</a>'+"</nobr>" + icon + "</nobr>"+'</span>';
               if(odvValue.length > 1){
                    rp_odv.innerHTML += odvLink;
                }
            }
            if(cookieSplit.length > odvControl){
                var moreId = document.getElementById("recentSpan"+usage+"_0").parentNode.id;
                rp_odv.innerHTML += '<a id="'+moreId+'More" href="javascript:void(0)">'+moreCookiesText+'</a> ';
                
                $('#'+moreId+'More').click(function() {
                  mdvCookie.moreOdvCookies(moreId+'More')
                });
            }
        }
    }
    else{
        if(cookieSplit.length < odvControl){
            odvControl = cookieSplit.length;
        }
        else if(newLength == "-"){
            odvControl = cookieControl;
        }
        
        var cookieContainerId = "rp_" + usage;
        $('#' + cookieContainerId).html('');

        for(o = 0; o < odvControl; o++){
            var odvValue = cookieSplit[o].split('|');
            var odvID    = '\'' + odvValue[1] + '\''
            var odvName  = odvValue[0]
            var trashImg = '<img class="trashOdvImg" name="'+[o]+'" onclick="deleteOdv(this.name, \''+usage+'\')" src="'+trashPic+'" alt="'+ deleteIt +'"/>';
             
            if(o < odvControl-1){
                var comma = ", ";
            }else{ //if(o = odvControl-1)
                var comma = "";
            }

            var icon = trashImg + comma;
            var destLink = '<span id="recentSpan'+usage+'_'+[o]+'"><a class="recentLinks" href="javascript:submitPoint('
                destLink+= odvID
                destLink+= ', \''+usage+'\')">'+ odvName + '</a>'+icon+'</span>';
                
            rp_odv.innerHTML += destLink
        }
            
        if(newLength == "-"){
            var moreId = document.getElementById("recentSpan"+usage+"_0").parentNode.id;
            rp_odv.innerHTML += '<a id="'+moreId+'More" href="javascript:void(0)" onclick="mdvCookie.moreOdvCookies(this.id)">'+moreCookiesText+'</a> ';
        }else{
            rp_odv.innerHTML += '<a href="javascript:void(0)" onclick="mdvCookie.odvCookies(\'-\', \''+usage+'\')">'+lessCookiesText+'</a>';
        }
        var control  = newLength;
    } 
}

// function to delete the odv cookie
MDVCookie.prototype.deleteOdv = function(nr, usage){
    
    var cookie = getCookie(usage);
    //var cookie = $.cookie(usage); // get cookie
    // Beim löschen wenn nötig weniger link und mehr ändern
    
     if(cookie.indexOf("undefined") == true){
        var cookie = cookie.replace("undefined", '');
    }
        
    if(cookie[cookie.length-1] == "$"){
        cookie = cookie.substring(0, cookie.length-2);
        var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
        
        //$.cookie(usage, +"=" + cookie + "; expires="+ a.toGMTString()+";"); // set cookie
        document.cookie = usage +"=" + cookie + "; expires="+ a.toGMTString()+";";
    }
    
    //cookie = getCookie(usage);
    cookie = $.cookie(usage); // get cookie
    
    var cookieArray = cookie.split('$');
    var tripLinkParent = "recentSpan"+usage+"_"+nr;
    
    $("#"+tripLinkParent).fadeOut('slow');
    $("#"+tripLinkParent).remove();
    
    if(nr == "0" && cookieArray.length == "1"){
        var replacedCookie = cookie.replace(cookieArray[nr], '');
    }
    else if( nr == cookieArray.length-1){
        var replacedCookie = cookie.replace("$"+cookieArray[nr], '');
    }
    else if(nr != cookieArray.length){
        var replacedCookie = cookie.replace(cookieArray[nr]+"$", '');
    } 
    
    var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
    document.cookie = usage+"=" + replacedCookie + "; expires="+ a.toGMTString()+";";
    //document.cookie = $.cookie(usage, +"=" + replacedCookie + "; expires="+ a.toGMTString()+";"); // set cookie

}

// shows more cookies if exists
MDVCookie.prototype.moreOdvCookies = function(id){
    if(id == "rp_originMore"){
        odvControl = moreCookieControl;
        this.odvCookies(odvControl, "origin");
    }
    else if(id == "rp_destinationMore"){
        odvControl = moreCookieControl;
        this.odvCookies(odvControl, "destination");
    }
}

// creates cookies for the box lastJourneys
MDVCookie.prototype.lastTrips = function(){
    var origin = $("#input_origin")[0];
    var destination = $("#input_destination")[0];
    var vuParam = transpCompany != '' ? '&itdLPxx_transpCompany=' + transpCompany : '';

    if(destination.value == "identified" && origin.value == "identified" && $('#logoff').val()!='true'){
        var tripOptions = '';

        $(".journeyOptions:input:checkbox:checked").each(function() {
            tripOptions +=  "&" + this.name + '='+ this.value;
        });

        $(".journeyOptions:input:radio:checked").each(function() {
            tripOptions += "&" + this.name + '='+ this.value;
        });

        $("#lineRestriction").each(function() {
            tripOptions += "&" + this.name + '='+ this.value;
        });

        var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
        var newOrigCo = origin.name;
        var newDestCo = destination.name
        var lastTrips = getCookie('lastTrips');
        //var lastTrips = $.cookie('lastTrips'); // get cookie
        
        if(lastTrips){
            var dollar = "$";
        }
        else{
            var dollar = "";
        }

        var lastTrips = getCookie('lastTrips');
       // var lastTrips = $.cookie('lastTrips'); // get cookie
        var newTrip = newOrigCo + "#" + newDestCo + "#" + tripOptions;
        
        var lastTrip = lastTrips.split('$');
        
        if(lastTrips.indexOf(newTrip) == -1 && lastTrip.length < lastTripCount && origin.name != destination.name){
            newTrip = newTrip;
            lastTrips = lastTrips;
            document.cookie = "lastTrips=" + newTrip + dollar + lastTrips + "; expires="+ a.toGMTString()+";";
        }
        else if (lastTrips.indexOf(newTrip) == -1 && origin.name != destination.name){
            var otherTrips = lastTrip[0] + "$" + lastTrip[1] + "$" + lastTrip[2] + "$" + lastTrip[3];
            document.cookie = "lastTrips=" + newTrip + "$" + otherTrips + "; expires="+ a.toGMTString()+";";
        }
    }
    else if($("#contentplusLastJourneys")[0]){

        var lastTripContainer = $("#contentplusLastJourneys")[0];
        
        var lastTrips = getCookie('lastTrips');
        // var lastTrips = $.cookie('lastTrips'); // get cookie

        if(lastTrips.length > 1){
            var lastTrip = lastTrips.split('$');
            if(lastTrip.length > 5){
                 var tripsControl = lastTripCount;
            }
            else{
                var tripsControl = lastTrip.length
            }
            
            if(lastTrips.indexOf("$undefined") != false){
                lastTrips = lastTrips.replace("$undefined", '');
            }
            
            for(p = 0; p < tripsControl; p++){
                var lastTripParts = lastTrip[p].split('#');
                var orig = lastTripParts[0].split('|');
                var dest = lastTripParts[1].split('|');
                
                var origTxt = orig[0];
                var destTxt = dest[0];
                var origLink = 'type_origin=any&name_origin=' + orig[1];
                var destLink = 'type_destination=any&name_destination=' +dest[1];
                var optnLink = lastTripParts[2];
                
                var SpEncId = 'SpEncId=' + $('#SpEncId').val();
                
                var url = 'XSLT_TRIP_REQUEST2?language=de&sessionID=0' + vuParam + '&convertAddressesITKernel2LocationServer=1&stateless=1&locationServerActive=1&' + origLink + '&' + destLink + optnLink + '&' + SpEncId;
                
                var trashImg = "<img class='trashImg' name='"+[p]+"' onclick='mdvCookie.deleteTrip(this.name)' src='"+trashPic+"' alt='"+ deleteIt +"'/>";
                var content = '<span id="recentSpanOrig_'+[p]+'">';
                    content = content.concat('<a class="lastTripsLink" id="tripLink_' + [p] + '" href="' + url + '">'+origTxt+' - '+destTxt+'</a>'+ trashImg);
                    content = content.concat("<br/></span>");
                lastTripContainer.innerHTML += content;
                
            }
        }else{ //if(lastTrips.length < 1)
            $('#recentTrips').css('display', 'none');
        }
    }
}

// function to delete the trip cookie
MDVCookie.prototype.deleteTrip = function(nr){
    var lastTrips = getCookie('lastTrips');
    //var lastTrips = $.cookie('lastTrips'); // get cookie
    var lastTrip = lastTrips.split('$');
    var recentBox = $("#contentplusLastJourneys")[0];
    
  //  if(recentBox.childElementCount == "1" && lastTrip.length == "1"){ // Funktioniert im FF
    if(recentBox.children.length == "1" && lastTrip.length == "1"){ // Funktioniert im IE
        var replacedCookie = lastTrips.replace(lastTrip[nr], '');
        $('#recentTrips').fadeOut('slow');
        $('#recentTrips').remove();
    }
    else if( nr == lastTrip.length-1){
        var replacedCookie = lastTrips.replace("$"+lastTrip[nr], '');
    }
    else if(nr != lastTrip.length){
        var replacedCookie = lastTrips.replace(lastTrip[nr]+"$", '');
    } 

    var linkOfTrip = "tripLink_"+nr;
    var tripLink = $("#"+linkOfTrip)[0];
    var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
    document.cookie = "lastTrips=" + replacedCookie + "; expires="+ a.toGMTString()+";";
    
    $(tripLink).parent().fadeOut('slow');
    $(tripLink).parent().remove();
   
}

// gets the cookies and puts it in an array
function getCookie(c_name){
	if (document.cookie.length>0){
	  c_start=document.cookie.indexOf(c_name + "=");
	  if (c_start!=-1){ 
	    c_start=c_start + c_name.length+1; 
	    c_end=document.cookie.indexOf(";",c_start);
	    if (c_end==-1) c_end=document.cookie.length;
	    return unescape(document.cookie.substring(c_start,c_end));
	    }
	  }
	return "";
}
