function saveLocationToCookie(locName, locGeo)
{
    // load from cookie or create new 
    var doc; 
    try {
        doc = parseXMLFromString(LBS.UTIL.COOKIE.readCookie('tripplanner_mylocations'));		
    }
    catch (e) {
        //var xml = '<?xml version="1.0" encoding="UTF-8"?><mylocations></mylocations>';
        //doc = parseXMLFromString(xml);
        doc = createXMLDocument();
        doc.appendChild(doc.createElement("mylocations"));		
    }
    // get max id
    var maxId = 0;
    var locations = doc.getElementsByTagName("location");
    for(var i=0;i<locations.length;i++) {
        var id = parseInt(locations[i].getAttribute("id"));
        if (id > maxId ) {
            maxId = id;
        }
    }
    // new location element
    var location = doc.createElement("location");
    var idAttr = doc.createAttribute("id");
    idAttr.nodeValue = maxId+1; 
    location.setAttributeNode(idAttr);
    var name = doc.createElement("name");
    name.appendChild(doc.createTextNode(locName));
    var alias = doc.createElement("alias");
    var geo = doc.createElement("geo");
    // remove white spaces and see if the geo is the same as input  
    if (locGeo.replace(/\s*/g, "").search(locName.replace(/\s*/g, "")) == -1) {
        geo.appendChild(doc.createTextNode(''));
    }
    else {
        geo.appendChild(doc.createTextNode(locGeo));
    }
    location.appendChild(name);
    location.appendChild(alias);
    location.appendChild(geo);
	// append 
    doc.firstChild.appendChild(location);
    // write to cookie
    var xml = saveXMLToString(doc);
    LBS.UTIL.COOKIE.writeCookie('tripplanner_mylocations', xml , 60*60*24*210);
    //alert('Cookie saved');
    return maxId+1;
}

function removeLocationFromCookie(locName)
{
    // load cookie
    var doc = parseXMLFromString(LBS.UTIL.COOKIE.readCookie('tripplanner_mylocations'));
    // find location and remove it
    var locations = doc.getElementsByTagName("location");
    for(var i=0;i<locations.length;i++) {
        if (locations[i].firstChild.firstChild.nodeValue == locName) {
            doc.documentElement.removeChild(locations[i]);
            break;
		}
    }
    LBS.UTIL.COOKIE.writeCookie("tripplanner_mylocations", saveXMLToString(doc), 60*60*24*210);
}

function replaceLocationInCookie(oldLocName, newLocName, newLocAlias, newLocGeo, locNum)
{
    // load cookie
    var doc = parseXMLFromString(LBS.UTIL.COOKIE.readCookie('tripplanner_mylocations'));
    // new location element
    var location = doc.createElement("location");
    var name = doc.createElement("name");
    name.appendChild(doc.createTextNode(newLocName));
    var alias = doc.createElement("alias");
    alias.appendChild(doc.createTextNode(newLocAlias));
    var geo = doc.createElement("geo");
    geo.appendChild(doc.createTextNode(newLocGeo));
    location.appendChild(name);
    location.appendChild(alias);
    location.appendChild(geo);
    // replace old location element
    var locations = doc.getElementsByTagName("location");
    for(var i=0;i<locations.length;i++) {
        if (locations[i].firstChild.firstChild.nodeValue == oldLocName && locNum == i+1) {
            doc.documentElement.replaceChild(location, locations[i]);
            LBS.UTIL.DOM.getElement('myLocs_locNameHidden'+(i+1)).value = newLocName;
            LBS.UTIL.DOM.getElement('myLocs_locAliasHidden'+(i+1)).value = newLocAlias;
            break;
        }
    }
    LBS.UTIL.COOKIE.writeCookie("tripplanner_mylocations", saveXMLToString(doc), 60*60*24*210);
}

function editableMyLocation(locName, locAlias, saveButtonText, cancelButtonText, locNum)
{
    var value = (locAlias!="") ? locAlias : locName;
    var prevContents = (locAlias!="") ? locAlias+' ('+locName+')': locName;
    locName = locName.replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
    prevContents = prevContents.replace(/([\\"'])/g, "\\$1").replace(/\0/g, "\\0");
    var html;
    html =  '<input value="'+value+'" type="text">';
    html += '<input style="margin-left:3px;" value="'+saveButtonText+'" type="button" onClick="';
    html +=     'var value = previousSibling.value.replace(/\'/g, \'\');';
    html += 	'value = value.substring(0,22);';	
    html += 	'if (value!=\''+locName+'\') replaceLocationInCookie(\''+locName+'\',\''+locName+'\', value, parentNode.nextSibling.value, '+locNum+');';
    html += 	'parentNode.nextSibling.nextSibling.style.display=\'inline\';';				
    html +=     'if (!value) var x = \''+locName+'\';';
    html +=     'else if (value && value!=\''+locName+'\') var x = \' ('+locName+')\';';
    html +=     'else var x = \'\';';
    html += 	'parentNode.previousSibling.innerHTML = value + x;';
    html +=     'parentNode.innerHTML = \'\';';
    html += '">';
    html +=	'<input style="margin-left:3px;" value="'+cancelButtonText+'" type="button" onClick="';
    html += 	'parentNode.nextSibling.nextSibling.style.display=\'inline\';';				
    html += 	'parentNode.previousSibling.innerHTML = \''+prevContents+'\';';
    html +=     'parentNode.innerHTML = \'\';';
    html += '">';
    return html;
}

function getAlias(string)
{
    var alias = "";
    if (string.indexOf("(")>=0) {
        alias = string.replace(/\(.*\)/, "");
    }
    alias = alias.replace(/^\s+|\s+$/g, ""); // trim
    return alias;
}

function getLocation(string)
{
    var loc = string;
    if (string.indexOf("(")>=0) {
        loc = string.substring(string.indexOf("(")+1, string.indexOf(")"));
    }
    loc = loc.replace(/^\s+|\s+$/g, ""); // trim
    return loc;
}

function updateSaveButton(field) {
    var inputField = LBS.UTIL.DOM.getElement(field+'_in');
    //var arr = $('#'+field+'_elem input');
    //var saveButtonEl = LBS.UTIL.DOM.getElement(field+'_saveButton');//$('#'+field+'_saveButton');
    var saveButtonEl = $('#'+field+'_saveButton');
    if (inputField && inputField.value.length >= 3 && !saveButtonEl.hasClass("saveButtonEnabled")) {
        //alert(field+' '+LBS.UTIL.DOM.getElement(field+'_in').value);
        // enable
        saveButtonEl.removeClass("saveButtonDisabled");
        saveButtonEl.addClass("saveButtonEnabled");
        //saveButtonEl.attr('onclick', saveButtonEl.attr('onclick').toString().replace('return false;', ''));
        saveButtonEl.click(function() {
            var el_in = LBS.UTIL.DOM.getElement(field+'_in');
            var el = LBS.UTIL.DOM.getElement(field);
            saveLocationToCookie(el_in.value, el.value);
            saveButtonEl.attr('href','#');
            LBS.UTIL.COOKIE.writeCookie('cookieinfo', 'location|'+field+'|'+el_in.value, null);
            LBS.UTIL.DOM.getElement('searchForm_form').submit();
        });
    }
    else {
        // disable
        saveButtonEl.removeClass("saveButtonEnabled");
        saveButtonEl.addClass("saveButtonDisabled");
        saveButtonEl.unbind('click');
        saveButtonEl.removeAttr('href');
        saveButtonEl.click(function() { return false; });
    }
}

function disableLink(aEl) {
}

function enableLink(aEl) {

}
