function Hashtable(){
    this.clear = hashtable_clear;
    this.containsKey = hashtable_containsKey;
    this.containsValue = hashtable_containsValue;
    this.get = hashtable_get;
    this.isEmpty = hashtable_isEmpty;
    this.keys = hashtable_keys;
    this.put = hashtable_put;
    this.remove = hashtable_remove;
    this.size = hashtable_size;
    this.toString = hashtable_toString;
    this.values = hashtable_values;
	this.playlist = hashtable_playlist;//Àý±í
	this.play_list = hashtable_play_list
    this.hashtable = new Array();
}

/*=======Private methods for internal use only========*/

function hashtable_clear(){
    this.hashtable = new Array();
}

function hashtable_containsKey(key)
{
	return (this.hashtable[key]!=null) ? true:false;
}

function hashtable_containsValue(value){
    var contains = false;
    if (value != null) {
        for (var i in this.hashtable) {
            if (this.hashtable[i] == value) {
                contains = true;
                break;
            }
        }
    }
    return contains;
}

function hashtable_get(key){
    return this.hashtable[key];
}

function hashtable_isEmpty(){
    return (parseInt(this.size()) == 0) ? true : false;
}

function hashtable_keys(){
    var keys = new Array();
    for (var i in this.hashtable) {
        if (this.hashtable[i] != null) 
            keys.push(i);
    }
    return keys;
}

function hashtable_put(key, value){
    if (key == null || value == null) {
        throw "NullPointerException {" + key + "},{" + value + "}";
    }else{
        this.hashtable[key] = value;
    }
}

function hashtable_remove(key){
    var rtn = this.hashtable[key];
    this.hashtable[key] = null;
    return rtn;
}

function hashtable_size(){
    var size = 0;
    for (var i in this.hashtable) {
        if (this.hashtable[i] != null) 
            size ++;
    }
    return size;
}

function hashtable_toString(){
    var result = "";
    for (var i in this.hashtable)
    {      
        if (this.hashtable[i] != null) 
            result += "{" + i + "},{" + this.hashtable[i] + "}\n";   
    }
    return result;
}

function hashtable_values(){
    var values = new Array();
    for (var i in this.hashtable) {
        if (this.hashtable[i] != null) 
            values.push(this.hashtable[i]);
    }
    return values;
}

function hashtable_playlist(){
    for (var i in this.hashtable){
        if (this.hashtable[i] != null) 
        values = this.hashtable[i];
		mkList(values[1],values[2]+values[4],'http://play.51t.com/lrcplay/lrc.asp?play=Exobud&lrcfs=1&id='+values[3],'',values[4] + '$$'+ values[2]  + '$$'+values[0]+'$$'+values[5]+'$$'+values[6]);
    }
}

function hashtable_play_list(){
	var obj = SongInfo();
	for (var i in this.hashtable){
        if (this.hashtable[i] != null)
		obj = ht.get(i);
		mkList(obj.url,obj.musicname+obj.singer,'http://play.51t.com/lrcplay/lrc.asp?play=Exobud&lrcfs=1&id='+obj.lrcid,'',obj.singer + '$$'+ obj.musicname  + '$$'+obj.id+'$$'+obj.sid+'$$'+obj.geci);
    }
}

var ht = new Hashtable();

function SongInfo()
{
	this.id			;//ID
	this.url		;//url
	this.lrcid		;//lrcid
	this.musicname	;//¸èÃû
	this.singer		;//¸èÊÖ
	this.sid		;
	this.sid1		;
}

function mediaList(id,url,lrcid,musicname,singer,sid,sgeci,f)
{

	if (ht.containsKey(id))
	{
		return;
	}

	var obj = new SongInfo();
	obj.id = id;
	obj.url = url;
	obj.lrcid = lrcid;
	obj.musicname = musicname;
	obj.singer = singer;
	obj.sid = sid;//
	obj.geci = sgeci //

	ht.put(id,obj);
	if (f==null){return;}
	if (f==1)
	{
		mkList(obj.url,obj.musicname+obj.singer,'http://play.51t.com/lrcplay/lrc.asp?play=Exobud&lrcfs=1&id='+obj.lrcid,'t',obj.singer + '$$'+ obj.musicname  + '$$'+obj.id+'$$'+obj.sid+'$$'+obj.geci);
		mkSel();
		showlistmusic(true);
	}
}