//-- Cookie utility function defs
var min = (60 * 1000)
var hour = (60 * min)
var day = (24 * hour)
var year = (365 * day)

//calc time that is time/time type over now
function calcTime (time, ttype){
	var exp = new Date();
	if (time) {
      	if (ttype == "year") exp.setTime(exp.getTime() + (time * year)); 
		else if (ttype == "day") exp.setTime(exp.getTime() + (time * day));
		else if (ttype == "hour") exp.setTime(exp.getTime() + (time * hour));
		else exp.setTime(exp.getTime() + (time * min));
	}
	return exp;
}

function getDomain  (){
	return (location.host=='localhost')? '' : '.eeplace.com';
}

//
// "Internal" function to return the decoded value of a cookie
//
function getCookieVal (offset) {
  var endstr = document.cookie.indexOf (";", offset);
  if (endstr == -1)
    endstr = document.cookie.length;
  return unescape(document.cookie.substring(offset, endstr));
}
//
//  Function to return the value of the cookie specified by "name".
//    name - String object containing the cookie name.
//    returns - String object containing the cookie value, or null if
//      the cookie does not exist.
//
function getCookie (name) {
  var arg = name + "=";
  var alen = arg.length;
  var clen = document.cookie.length;
  var i = 0;
  while (i < clen) {
    var j = i + alen;
    if (document.cookie.substring(i, j) == arg)
      return getCookieVal (j);
    i = document.cookie.indexOf(" ", i) + 1;
    if (i == 0) break; 
  }
  return null;
}

//
//  Function to create or update a cookie.
//    name - String object containing the cookie name.
//    value - String object containing the cookie value.  May contain
//      any valid string characters.
//    [expires] - Date object containing the expiration data of the cookie.  If
//      omitted or null, expires the cookie at the end of the current session.
//    [path] - String object indicating the path for which the cookie is valid.
//      If omitted or null, uses the path of the calling document.
//    [domain] - String object indicating the domain for which the cookie is
//      valid.  If omitted or null, uses the domain of the calling document.
//    [secure] - Boolean (true/false) value indicating whether cookie transmission
//      requires a secure channel (HTTPS).  
//
//  The first two parameters are required.  The others, if supplied, must
//  be passed in the order listed above.  To omit an unused optional field,
//  use null as a place holder.  For example, to call SetCookie using name,
//  value and path, you would code:
//
//      SetCookie ("myCookieName", "myCookieValue", null, "/");
//
//  Note that trailing omitted parameters do not require a placeholder.
//
//  To set a secure cookie for path "/myPath", that expires after the
//  current session, you might code:
//
//      SetCookie (myCookieVar, cookieValueVar, null, "/myPath", null, true);
//
function setCookie (name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    ((secure) ? "; secure" : "");
}

//  Function to delete a cookie. (Sets expiration date to start of epoch)
//    name -   String object containing the cookie name
//    path -   String object containing the path of the cookie to delete.  This MUST
//             be the same as the path used to create the cookie, or null/omitted if
//             no path was specified when creating the cookie.
//    domain - String object containing the domain of the cookie to delete.  This MUST
//             be the same as the domain used to create the cookie, or null/omitted if
//             no domain was specified when creating the cookie.
//
function deleteCookie (name,path,domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

//set the lcid cookie then change location
function setLCID(lang, lcid){
	setCookie("lang", lcid, calcTime(1, "year"), "/", getDomain())

	//ok now relocate the page
	var href = location.href
	var new_href= null;
	var re = new RegExp("(.*lang=)(en|cn|kr|tw|jp)?(.*)","i");	
	var arr = re.exec(href);
	if(RegExp.$1!=""){
		new_href = RegExp.$1+lang+RegExp.$3
	}else{
		new_href=href+(href.indexOf("?")==-1?"?":"&")+"lang="+lang;
	}
	location.href = new_href;
}

//the current user, not set until login
function getMemberid() {
	var memberid = getCookie("mid");
	return memberid;
}

//the current user, not set until login
function getGUID() {
	var guid = getCookie("guid");
	return guid;
}

//the user language
function getLCID() {
	var lcid = getCookie("lang");
	return lcid;
}

//the user language
function getLang() {
	var lang = getCookie("lang");
	return lang;
}

//pull an argument value from a string or the search string
function getArg(arg_name, str) {
	var value = "", tmpstr = ""
	if (!str) str = location.search.substring(1)
	if (!str) return value
	else {
		var tmparray = str.split("&")
		for (i=0; i<tmparray.length; i++) {
			tmpstr = tmparray[i].toUpperCase()
			if (tmpstr.indexOf(arg_name.toUpperCase() + "=") != -1) {
				var tmp2array = tmparray[i].split("=")
				value = tmp2array[1]
			}
		}
	}
	return value
}
