//cookie process
var MAKER_COOKIE_NAME = "user_";
var MAX_MAKER_COOKIES = 10;
var FAVOURITE_COOKIE_NAME = "user_favourite";
var MAX_FAVOURITE_COOKIES = 50;
var cookiedays = 365; //days

//fix cookie : save cookie to 1 id
function getCookieFromArr(cname,index) {
	var cval = getCookie(cname);
	if (cval == undefined || cval == "" || cval == "undefined") return "";
	var values = cval.split(",");
	if (index > values.length-1) return "";
	else return values[index];
}

function addCookieToArr(cname,cvalue,exdays) {
	if (cvalue == undefined || cvalue == "undefined" || cvalue == "" || cvalue == "-" || cvalue == "cx") return;  
	var cval = getCookie(cname);
	if (cval == undefined || cval == "undefined" || cval == "") cval = cvalue;
	else cval = cvalue + "," + cval;// + "," + cvalue;
	setCookie(cname,cval,exdays);
}

function valueExists(cname,value) {
	var ret = -1;
	var values = getCookieArr(cname);
	if (values.length > 0) {
		for (i=0;i<values.length;i++) {
			if (values[i] == value) ret = i;
			return ret;
		}
	}
	return ret;
}

//delete 1 value of cookie in array and update 
function deleteCookieByValue(cname,value,exdays) {
	var values = getCookieArr(cname);
	var index = -1;
	if (values.length > 0) {
		for (i=0;i<values.length;i++) {
			if (values[i] == value) {
				index = i;
				deleteCookieInArr(cname,index,exdays);
			}
		}
	}
}

//delete cookie if know index of value 
function deleteCookieInArr(cname,index,exdays) {
	var cval = getCookie(cname);
	if (cval == undefined || cval == "") return ;
	var values = cval.split(",");
	if (index > -1 && index < values.length) {
		values[index] = "";
		cval = "";
		for (i = 0; i<values.length;i++) {
			if (values[i] != undefined && values[i] != "undefined" && values[i] != "") {
				if (cval == "") cval = values[i];
				else cval = cval + "," + values[i];
			}
		}
		setCookie(cname,cval,exdays);
	}
}

//set to cookie value of maker when user select from select box
function setCookieForFieldA(id) {
    var oSelected = document.getElementById(id).options[document.getElementById(id).selectedIndex].value;
    var hasChanged = false;
    var changeIndex = 0;
    if (oSelected != "-" && oSelected != "cx") {
	    for(i=0;i<MAX_MAKER_COOKIES;i++) {
	    	var maker_cookie = getCookieFromArr(MAKER_COOKIE_NAME+id,i);
	    	if (maker_cookie == oSelected) {
	    		changeIndex = i;
	    		deleteCookieInArr(MAKER_COOKIE_NAME+id,changeIndex,365);
	    		hasChanged = true;
	    	}
	    }
	    if (hasChanged) {
	    	addCookieToArr(MAKER_COOKIE_NAME+id,oSelected,365);
	    }else{
    		deleteCookieInArr(MAKER_COOKIE_NAME+id,MAX_MAKER_COOKIES-1,365);
    		addCookieToArr(MAKER_COOKIE_NAME+id,oSelected,365);
		}
	}
}

//put value from cooke to top of select box
function putOnTop(id) {
    var Rem = document.getElementById(id);
    var selectedValue = Rem.options[Rem.selectedIndex].value;
    var SaveString = "";
    var blank_space = 0;
    var haveCookie = false;
    for (var i = 0; i < Rem.length; i++) {
        if (Rem.options[i].value >= "cx") {
            blank_space = i;
            break;
        }
    }
    for (var j = 0; j < Rem.length; j++) {
        if (j >= blank_space)
            SaveString += Rem.options[j].text + ',' + Rem.options[j].value + ',';
    }
    Rem.options.length = 0;
    for(i=0;i<MAX_MAKER_COOKIES;i++) {
    	var maker_cookie = getCookieFromArr(MAKER_COOKIE_NAME+id,i);
    	if (maker_cookie != "undefined" && maker_cookie != undefined && maker_cookie != "") {
    		AddItem(maker_cookie, getTextFromValue(SaveString, maker_cookie), id);
    		haveCookie = true;
    	}
    }
    if ( haveCookie) {
        AddItem("-", "------------------", id);
    }
    InsertAllDBItems(SaveString, id);
    for (index = 0; index < Rem.length; index++) {
        if (Rem.options[index].value == selectedValue) {
            Rem.selectedIndex = index;
        }
    }
}

function AddItem(Value, Text, id) {
    var opt = document.createElement("option");
    var Rem = document.getElementById(id);
    if (Value != null) {
        Rem.options.add(opt);
        opt.text = Text;
        opt.value = Value;
    }
}

function InsertAllDBItems(SaveString, id) {
    var opt;
    var Rem = document.getElementById(id);
    var Data = SaveString.split(',');
    for (x = 0; x < Data.length - 1; x += 2) {
        opt = document.createElement("option");
        Rem.options.add(opt);
        opt.text = Data[x];
        opt.value = Data[x + 1];
        
    }
}

function getTextFromValue(SaveString, value) {
    var getText = "";
    var Data = SaveString.split(',');
    for (var i = 0; i < Data.length; i++) {
        if (value == Data[i]) {
            getText = Data[i - 1];
        }
    }
    return getText;
}
//get cookie and convert it to array
function getCookieArr(cname) {
	var values = new Array();
	var cval = getCookie(cname);
	if (cval != undefined && cval != "" && cval != "undefined") {
		values = cval.split(",");
	}
	return values;
}
//set favourite boat to cookie
function setFavouriteCookie(boatId) {
	var values = getCookieArr(FAVOURITE_COOKIE_NAME)
	if (values.length >= MAX_FAVOURITE_COOKIES) {
		for (i=MAX_FAVOURITE_COOKIES-1;i<values.length;i++) {
			deleteCookieInArr(FAVOURITE_COOKIE_NAME,i,cookiedays);
		}
	}
	if (valueExists(FAVOURITE_COOKIE_NAME,boatId) == -1) {
		addCookieToArr(FAVOURITE_COOKIE_NAME,boatId,cookiedays);
	}
}

//delete favourite cookie value
function deleteFavouriteCookie(boatId) {
	deleteCookieByValue(FAVOURITE_COOKIE_NAME,boatId,cookiedays);
}

function fixOldFavouriteCookies() {
	var i, x, y, ARRcookies = document.cookie.split(";");
    for (i = 0; i < ARRcookies.length; i++) {
    	var cval = "";
        x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("="));
        y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1);
        x = x.replace(/^\s+|\s+$/g, "");
        if (x.indexOf("BOAT_") == 0) {
            cval = unescape(y);
            if (cval.indexOf("BOAT_") == 0) {
            	cval = cval.replace("BOAT_","");
            }
            if (cval != "") {
            	setFavouriteCookie(cval);
            	deleteCookie(x);
            }
        }
    }
}

$(document).ready(function() {
	fixOldFavouriteCookies();
})
