var mdvCookies= new Array();

function MDVCookie(){

}

// creates cookies for origin and destination odv
MDVCookie.prototype.saveCookie = function(usage){

    var values = $("#co_" + usage)[0].name.split('|');
    var oldCookie = '';
    
    if(document.cookie){ 
      oldCookie = $.cookie(usage);
    }
    
    if(oldCookie == null){
        oldCookie = ''
    }
    
    var newCookie = new Array(); 
    var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
    var cookieValue = this.convertCookie(values[0]) + '|' + values[1] + '|' + values[2];
    
    //Cookies for usage
    if(oldCookie.indexOf(values[1]) < 0){
    
        if(oldCookie == ''){
            var dollar = '';
        }
        else{
            var dollar = '$';
        }
        
		if(oldCookie.length > 0){
			oldCookie = oldCookie.split("$");
            newCookie = oldCookie;
		}
		newCookie.unshift(cookieValue);
        
		if(newCookie.length > 20){
			newCookie.pop();
		}
        
        newCookie = newCookie.join("$");
        // write cookie to page 
        document.cookie = usage +"="+ newCookie +"; expires="+ a.toGMTString()+";";
    }
}

// this function insert the odv cookie
MDVCookie.prototype.insertOdvCookie = function(usage){

    var cookie = '';
    
    if(document.cookie){ 
      cookie = $.cookie(usage);
    }
    
    if(cookie!='' && cookie !=null){
    
        if(cookie.split("$").length > 0){
        
            $('#verlauf_' + usage + '-content ul li:gt(0)').remove();
    
            for(var i =0; i < cookie.split("$").length; i++){
            
                var coClass = '';
                var coType = '';
                var type = cookie.split("$")[i].split('|')[2];
                
                switch(type){
                    case 'stop': coType = "Haltestelle"; coClass = 'hs';
                        break;
                    case 'poi': coType = "Wichtiger Punkt"; coClass = 'ziel';
                        break;
                    case 'street': coType = "Adresse"; coClass = 'adr';
                        break;
                    case 'address': coType = "Adresse"; coClass = 'adr';
                        break; 
                    case 'singlehouse': coType = "Adresse"; coClass = 'adr';
                        break;
                    default: coType = "Linie"; coClass = 'hs';
                        break;
                }
                
                var coName = this.reConvertCookie(cookie.split("$")[i].split('|')[0]);
                var stateless = cookie.split("$")[i].split('|')[1];
                var submitType = type === 'line' ? 'Line' : 'Odv';
                var html = '<li class="' + coClass +'"><span onclick="mdvCookie.submit' + submitType + '(\'' + stateless +'\',\'' + usage + '\')"><strong>' + coName +'</strong><br/>';
                    html += coType;
                    html +='</span><a href="#" onclick="mdvCookie.deleteCookie(' +i +',\'' + usage+ '\')" title="l&ouml;schen"><img src="./images/icon.trash.png" alt="" /></a>';
                    html += '</li>';
                    
                $('#verlauf_' + usage + '-content ul').append(html)
            }
        }
    }
    else{
        $('#verlauf_' + usage + '-content ul li:gt(0)').remove();
    }
}

// this function insert the line cookie 
MDVCookie.prototype.insertLineCookie = function(usage){

    var cookie = '';

    if(document.cookie){ 
      cookie = $.cookie(usage);
    }
    
    if(cookie!='' && cookie !=null){
    
        if(cookie.split("$").length > 0){
        
            $('#verlauf_' + usage + '-content ul li:gt(0)').remove();
    
            for(var i =0; i < cookie.split("$").length; i++){
            
                var coClass = '';
                var coType = '';
                var type = cookie.split("$")[i].split('|')[2];
                var coName = this.reConvertCookie(cookie.split("$")[i].split('|')[0]);
                
                var coNameSubmit = coName.replace('Linie ', '');
        
                var html = '<li class="' + coClass +'"><span onclick="mdvCookie.submitLine(\'' + coNameSubmit+'\')"><strong>' + coName +'</strong><br/>';
                    html += coType;
                    html +='</span><a href="#" onclick="mdvCookie.deleteCookie(' +i +',\'' + usage+ '\')" title="l&ouml;schen"><img src="./images/icon.trash.png" alt="" /></a>';
                    html += '</li>';
                    
                $('#verlauf_' + usage + '-content ul').append(html)
            }
        }
    }
    else{
        $('#verlauf_' + usage + '-content ul li:gt(0)').remove();
    }
}

// function to delete the selected cookie
MDVCookie.prototype.deleteCookie = function(pos, usage){
    
    var cookie = $.cookie(usage);
    
    if(pos == 'all'){
        var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
        document.cookie = usage+"=; expires="+ a.toGMTString()+";";
    }
    else{
        var cookieArray = cookie.split('$');

        if(pos == '0' && cookieArray.length == '1'){
            var replacedCookie = cookie.replace(cookieArray[pos], '');
        }
        else if(pos == cookieArray.length-1){
            var replacedCookie = cookie.replace("$"+cookieArray[pos], '');
        }
        else if(pos != cookieArray.length){
            var replacedCookie = cookie.replace(cookieArray[pos]+"$", '');
        } 
        
        var a = new Date(); a = new Date(a.getTime() +1000*60*60*24*365);
        document.cookie = usage+"=" + replacedCookie + "; expires="+ a.toGMTString()+";";
    }
    
    this.insertOdvCookie(usage);
}

// function to submit line cookie
MDVCookie.prototype.submitOdv = function(odv, usage){
    $('#nameInfo_' + usage).val(odv);
    $('#typeInfo_' + usage).val('any');
    var lc = $('#lastCommand').val();
    if (/changeRequest|tripGoOn|tripRetoure/.test(lc)) {
        $('#execInst').val('verifyOnly');
    }
    document.forms['request'].submit();
}

// function to submit line cookie
MDVCookie.prototype.submitLine = function(line){
    document.forms['requestLine'].lineName.value = line;
    document.forms['requestLine'].submit();
}

// this function encode the cookie base 64
MDVCookie.prototype.convertCookie = function(name){
    name = $.base64.encode(name);
    return name;
}

// this function decode the cookie base 64
MDVCookie.prototype.reConvertCookie = function(name){
    name = $.base64.decode(name);   
    return name;
}

$(document).ready(function(){

    mdvCookie = new MDVCookie();
    
    $("input[id^='co_']").each(function() {
        var usage = this.id.split('_')[1];
        mdvCookie.saveCookie(usage)
    });
    
});
