
function getQuerystring(key, default_){
  if (default_==null) default_="";
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
} 
function checkEnter(e) {
	if (getKeyCode(e) == 13) {
		return true;
	} else {
		return false;
	}
}
function checkSpace(e) {
	if (getKeyCode(e) == 32) {
		return true;
	} else {
		return false;
	}
}
function checkTab(e){
	if (getKeyCode(e) == 9) {
		return true;
	} else {
		return false;
	}
}
function getKeyCode(e){
	var code;
	if (e && e.which) {
		e = e;
		code = e.which;
	} else {
		e = event;
		code = e.keyCode;
	}
	return code;
}
function listPagingNumber(pageIndex, totalPage, callbackFunction) {
	var result = "<div class='p_bar'>";
	for (var i = 1; i <= totalPage; i++) {
		var p;
		if (i != pageIndex) {
			var f = callbackFunction + "(" + i + ")";
                //p = " &nbsp;<a href="#" onclick=""+f+";return false">" + i + "</a>&nbsp; ";
			p = " &nbsp;<a href=\"#\" onclick=\"" + f + ";return false\" class='p_num'>" + i + "</a>&nbsp; ";
		} else {
                //p = "&nbsp;" + i + "&nbsp;";
			p = "<a class='p_curpage>'" + i + "</a>";
		}
		result = result + p;
	}
	return result;
}
function shortDisplay(id, str, length, isEnableHTML) {
    
    var strArray = new Array();
    strArray = str.split(/<\/p>/gi);
    var aryLength = strArray.length;
    var strLength = 0;
    var index = 0;
    var nMore = 0;
    var moreString = "<span id=\"rd" + id + "\">... <nobr>[<a href=\"javascript:showMore( 'rd" + id + "'  , 'review" + id + "');\">" + more + "</a>]</nobr></span><span id=\"review" + id + "\" style=\"display:none;\">";  
    if (aryLength > 1) {
        for (x = 0; x < aryLength; x++) {
            if ("" != strArray[x]) {
                strArray[x] = strArray[x] + "</p>";
            }
        }
        for (x = 0; x < aryLength - 1; x++) {
            var stripped;
            if(isEnableHTML) {
                stripped = strArray[x];
            }
            else {
                stripped = strArray[x].replace(/(<([^>]+)>)/ig, "");    
            }
             
            strLength = strLength + stripped.length;
            if (strLength > length && x < aryLength - 2) {
                strArray[index] = strArray[index] + moreString;
                nMore = 1;
                break;
            }
        }
        var result = "";
        for (x = 0; x < aryLength - 1; x++) {
            result = result + strArray[x];
        }
        if (nMore == 1) {
            result = result + "</span>";
        }
        return result;
    } else {
        if(!isEnableHTML) {
            str = str.replace(/</gi,"&lt;");
            str = str.replace(/>n/gi,"&gt;");
        }
        str = str.replace(/\n/gi,"<br/>");
        if (str.length > length + 100) {
            var result = "";
            result = str.substring(0, length);
      var indexHead = length;
            if(result.toLowerCase().lastIndexOf("<a") > result.toLowerCase().lastIndexOf("a>"))
          indexHead = str.toLowerCase().indexOf("</a>", length)+4;
        result = str.substring(0, indexHead) + moreString + 
               str.substring(indexHead, str.length) + "</span>";
            return result;
        } else {
            return str;
        }
    }
}
function showMore(rd, review) {
	jQuery("#" + rd).hide();
	jQuery("#" + review).show();
}
function trim(sInString) {
	sInString = sInString.replace(/^\s+/g, "");// strip leading
	return sInString.replace(/\s+$/g, "");// strip trailing
}
/**
 *Get array of object of check box. The name of check box must be the same
 *Object is composed of elementValue and elementName. You can access it by obj.elementValue, obj.elementName.
 *Note:the element must specified elementName(assign to obj.elementName) and value(assign to obj.elementValue) property. 
 *@param theElement the form element
 *@return Return undefined if there is no check box checked.
 */
function getCheckBoxObject(theElement, selectDisabledObj) {
	var rtnArray = new Array();
	if (theElement == undefined) {
		return undefined;
	}
	if (theElement.length == undefined) {
		if (theElement.checked) {
			if (selectDisabledObj || !theElement.disabled) {
				var obj = new Object();
				obj.elementName = theElement.getAttribute("elementName");
				obj.elementValue = theElement.value;
				obj.elementId = theElement.id;
				rtnArray[0] = obj;
				return rtnArray;
			}
		} else {
			return undefined;
		}
	} else {
		var arrayIndex = 0;
		for (i = 0; i < theElement.length; i++) {
			if (theElement[i].checked) {
				if (selectDisabledObj || !theElement[i].disabled) {
					var obj = new Object();
					obj.elementName = theElement[i].getAttribute("elementName");
					obj.elementValue = theElement[i].value;
					obj.elementId = theElement[i].id;
					rtnArray[arrayIndex++] = obj;
				}
			}
		}
		if (rtnArray.length == 0) {
			return undefined;
		} else {
			return rtnArray;
		}
	}
}
/**
 *Get array of object of check box. The name of check box must be the same
 *Object is composed of elementValue and elementName. You can access it by obj.elementValue, obj.elementName.
 *Note:the element must specified elementName(assign to obj.elementName) and value(assign to obj.elementValue) property. 
 *@param theElement the form element
 *@return Return undefined if there is no check box checked.
 */
function getNoneDisableCheckBoxObject(theElement) {
	return getCheckBoxObject(theElement, false);
}
function selectAll(theElement) {
	for (var i = 0; i < elementObjs.length; i++) {
		if (elementObjs[i].name.indexOf("check") && (elementObjs[i].disabled == false)) {
			elementObjs[i].checked = true;
		}
	}
}
function remixDownload2(remixId, memberId, url) {
	if (memberId <= 0) {
		alert(loginfirst);
		return;
	}
	alert(remixDownloadAlert);
	remixAction.addDownloadRemix(remixId, memberId);
    window.open(url);
}
function toLocalDate(utcDateTimeString) {
	var utcDate = new Date(utcDateTimeString);
	var utcTime = utcDate.getTime();
	var localdate = new Date();
	// obtain local UTC offset and convert to msec
	localOffset = localdate.getTimezoneOffset() * 60000;
	var localTime = utcTime - localOffset;
	localdate = new Date(localTime);
	return toSystemDateFormat(localdate);
}
function toLocalTime(utcDateTimeString) {
	var utcDate = new Date(utcDateTimeString);
	var utcTime = utcDate.getTime();
	var localdate = new Date();
	// obtain local UTC offset and convert to msec
	localOffset = localdate.getTimezoneOffset() * 60000;
	var localTime = utcTime - localOffset;
	localdate = new Date(localTime);
	return toSystemDateTimeFormat(localdate);
}
function toSystemDateFormat(d) {
	var date = toDoubleDigitInteger(d.getDate());
	var month = toDoubleDigitInteger(d.getMonth() + 1);
	var year = d.getFullYear();
	return year + "/" + month + "/" + date;
}
function toSystemDateTimeFormat(d) {
	var date = toDoubleDigitInteger(d.getDate());
	var month = toDoubleDigitInteger(d.getMonth() + 1);
	var year = d.getFullYear();
	var hour = toDoubleDigitInteger(d.getHours());
	var minute = toDoubleDigitInteger(d.getMinutes());
	var second = toDoubleDigitInteger(d.getSeconds());
	return year + "/" + month + "/" + date + " " + hour + ":" + minute + ":" + second;
}
function toDoubleDigitInteger(integer) {
	if (integer < 10) {
		integer = "0" + integer;
	}
	return integer;
}
function getStringMatchTimes(_string, _keyword) {
	index = 0;
	matchTimes = 0;
	var string = new String(_string);
	while (string.indexOf(_keyword, index) != -1) {
		index = string.indexOf(_keyword, index) + 1;
		matchTimes = matchTimes + 1;
	}
	return matchTimes;
}
function setTextareaHeightToFitContent(id) {
	var object = document.getElementById(id);
	object.style.height = object.scrollHeight;
}
function checkTagLength(tagName) {
	if (tagName.indexOf("\"") == 0 && tagName.lastIndexOf("\"") == tagName.length - 1) {
		while (tagName.indexOf("\"") != -1) {
			tagName = tagName.replace("\"", "");
		}
		if (tagName.length > 20) {
			alert(tag_length_warning);
			return false;
		}
	} else {
		var tagList = new Array();
		tagList = tagName.split(" ");
		for (i in tagList) {
			if (tagList[i].length > 20) {
				alert(tag_length_warning);
				return false;
			}
		}
	}
	return true;
}
function addCommasToNumber(nStr) {
	nStr += "";
	x = nStr.split(".");
	x1 = x[0];
	x2 = x.length > 1 ? "." + x[1] : "";
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, "$1" + "," + "$2");
	}
	return x1 + x2;
}
function link_to_movie_info(movie, anchor) {
	anchor = typeof (anchor) != "undefined" ? anchor : "";
	return "/movie/movie_info.do?discSetId=" + movie.discSetId + "&regionLanguage=" + movie.regionLanguage + anchor;
}
function scrollToTableBegin(anchor) {
	document.getElementById(anchor).focus();
}
/**
 *Encode <, > and "
 */
function encodeHtmlString(str) {
	var newString = str;
	while (newString.indexOf("<") >= 0) {
		newString = newString.substring(0, newString.indexOf("<")) + "&lt;" + newString.substring(newString.indexOf("<") + 1);
	}
	while (newString.indexOf(">") >= 0) {
		newString = newString.substring(0, newString.indexOf(">")) + "&gt;" + newString.substring(newString.indexOf(">") + 1);
	}
	while (newString.indexOf("\"") >= 0) {
		newString = newString.substring(0, newString.indexOf("\"")) + "&quot;" + newString.substring(newString.indexOf("\"") + 1);
	}
	return newString;
}
function link_to_movie_info2 (discSetId, regionLanguage, anchor)
{
    anchor = typeof(anchor) != 'undefined' ? anchor : "";
    return "/movie/movie_info.do?discSetId="+discSetId + "&regionLanguage=" + regionLanguage + anchor
}

function htmlEncode (str){
   var div = document.createElement("div");
   var text = document.createTextNode(str);
   div.appendChild(text);
   return div.innerHTML;
}

function htmlDecode (str){
   var div = document.createElement("div");
   div.innerHTML = str;
   return div.innerHTML;
}

function get(el) {
	return document.getElementById(el);
}
function htmlToStr(obj){
	return $('<div>').append(obj).remove().html();
}

/** get parameter from a url **/
function getParameter(name, url){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(url);
    if( results == null )
      return "";
    else
      return results[1];
}
