location.get=function (nm) {
    var pttn=new RegExp("[\?&]"+nm+"=[^&]*");
    var res=unescape(this.search).match(pttn);
    if( res!=null)
    {
        return String(res).split('=')[1]; //.replace(/\s*/g,'');
    }
    return false;
}

// query string :: param 추가
location.set=function (nm,val) {
    var qs='&'+unescape(this.search).substring(1);
    var pttn=new RegExp("&"+nm+"=[^&]*","g");
    if(pttn.test(qs)) {
        qs=qs.replace(pttn, "&"+nm+"="+val);
    } else {
        qs+="&" + nm+'='+val;
    }
	qs=qs.replace(/^&+/,'').replace(/&+/g,'&');
    return'http://'+this.host+this.pathname+'?'+qs;
}

//-----------------------------
// 페이징 ::
//-----------------------------
/*
//		first: '<span class="page_style" title="처음">F</span>',
//		prev: '<img src="/admin/img/btn/arrow1.gif" align="absmiddle"><span class="page_style" title="이전">P</span>',
//		next: '<img src="/admin/img/btn/arrow2.gif" align="absmiddle"><span class="page_style" title="다음">N</span>',
//		last: '<span class="page_style" title="끝">L</span>',


var page_set={
    key:'page',
    list_limit:10,							// 생략가능: 보여줄 페이지당 자료 수
    page_limit:10,						// 생략가능: 보여줄 페이지 수
    list_total:{var_list_total}      // 필수입력: 총 자료수 
}
*/
QPaging=function (page_set) {
    if(typeof page_set!='object'||page_set.list_total<1) return;
    var ps=page_set;
	if(!ps.list_limit || ps.list_limit<0) ps.list_limit=10;
	if(!ps.page_limit || ps.page_limit<0) ps.page_limit=10;
	if(!ps.key) ps.key='page';

	var pttn=new RegExp("[\?&]"+ps.key+"=[^&]*");
    var cp=unescape(location.search).match(pttn);
	cp=(cp!=null)?String(cp).split('=')[1].replace(/\s*/g,''):1;
    // var cp=location.get('page')||1;
	if(cp=='' || isNaN(cp)) cp=1;

	try {
		var tp=Math.ceil(ps.list_total/ps.list_limit);
		var tpg=Math.ceil(tp/ps.page_limit);
		var cpg=Math.ceil(cp/ps.page_limit);
	} catch (e) {
		alert('Error: '+e.message);
		return;
	}
    if(cp>tp) cp=tp;
    if(cpg>tpg) cpg=tpg;

    var sp=(cpg-1)*ps.page_limit+1;
    var ep=sp+ps.page_limit-1;
    if(ep>tp) ep=tp;

		var sl=ps.list_total-(cp-1)*ps.list_limit;
		var el=sl-ps.list_limit;
		if(el<0) el=0;

		this.l_start=sl;
		this.l_end=el;

    this.page=cp;
	this.p_key=ps.key;			// key=page
    this.l_total=ps.list_total;
    this.l_limit=ps.list_limit;
    this.p_limit=ps.page_limit;
    this.p_total=tp;
    this.p_start=sp;
    this.p_end=ep;
	// default style setting
	this.pubset={
		first: '',
		prev: '<img src="/admin/img/btn/arrow1.gif" align="absmiddle">&nbsp;',
		next: '<img src="/admin/img/btn/arrow2.gif" align="absmiddle">',
		last: '',
		cur: function (page) {return '<span class="page_style cur_page">'+page+'</span> ';},
		list: function (page) {return '<span class="page_style list_page">'+page+'</span> ';},
		pagelink: function (txt,href) { return '<a href="'+href+'" class="page_link">'+txt+'</a>&nbsp;';}
	}
	this.p_href='';
    this.init=true;
}

// 페이지별 링크주소 수정|추가
QPaging.prototype.page_href=function (n)
{
    //return location.set('page',n);
	if( this.p_href == '') {
		var qs='&'+unescape(location.search).substring(1);
		//var pttn=/&page=[^&]*/g;
		var pttn=new RegExp("&"+this.p_key+"=[^&]*","g");
		if(pttn.test(qs)) { qs=qs.replace(pttn, "&"); }
		//qs=String(qs+'&page=').replace(/^&+/,'').replace(/&{2,}/g,'&');
		qs=String(qs+'&'+this.p_key+'=').replace(/^&+/,'').replace(/&{2,}/g,'&');
		this.p_href='http://'+location.host+location.pathname+'?'+qs;
	}
	return this.p_href+n;
}

// pubset 수정/추가
var qpage_default_pubset={};
QPaging.prototype.pubsetup=function (pubset) 
{
	if(typeof pubset !='object') return;
	qpage_default_pubset=this.pubset;
	for(ele in pubset) {this.pubset[ele]=pubset[ele];}
}

// 페이지 출력
QPaging.prototype.make=function ()
{
    if(this.init!=true) return false;

    var s_first=this.pubset.pagelink(this.pubset.first, this.page_href(1));
    var s_prev=this.pubset.pagelink(this.pubset.prev, this.page_href(this.p_start-1));
    var s_next=this.pubset.pagelink(this.pubset.next, this.page_href(this.p_end+1));
    var s_last=this.pubset.pagelink(this.pubset.last, this.page_href(this.p_total));

    var str='';
    str+=(this.p_start>this.p_limit)? s_first+' '+s_prev+' ':'';
    for(var i=this.p_start; i<=this.p_end;i++)
    {
        if(i==this.page) { str+= '<font color=tomato>'+ this.pubset.cur(i) + '</font>&nbsp;&nbsp;'; }
        else { str+= this.pubset.pagelink(this.pubset.list(i), this.page_href(i))+' '; }
    }
    str+=(this.p_end<this.p_total)?' '+s_next+' '+s_last:'';
//    str+=' (총 '+this.p_total+' 페이지, '+this.l_total+' 자료)';
	return str;
}

QPaging.prototype.display=function (tag_id)
{
    if(this.init!=true) return;
	var str=this.make();
    try{
        if(typeof tag_id=='object' && tag_id.length>0)
        {
            for( id in tag_id ) {
                obj=document.getElementById(tag_id[id]);
                if(obj) obj.innerHTML=str;
            }
        }
        else { document.getElementById(elem_id).innerHTML=str; }
    } catch (e) {
        document.write(str);
    }

}

//-----------------------------
// 현재페이지 목록 출력 sample
//-----------------------------
function qpage_list_print(instanceofQPaging)
{
	if(typeof instanceofQPaging !='object') return;
	for(n=instanceofQPaging.l_start; n>instanceofQPaging.l_end; n--) { document.write ('<li>'+n); }
}
//------------------------------------------------------------


/**
//--------------------------
// Exam:: new QPaging
//--------------------------

// 페이지 출력 문자 스타일
var qpage_style={
    first: '<span class="page_style" title="처음">F</span>',
    prev: '<span class="page_style" title="이전">xP</span> ',
    next: '<span class="page_style" title="다음">xN</span> ',
    last: '<span class="page_style" title="끝">L</span>',
    cur: function (page) {
        return '<span class="page_style cur_page">'+page+'</span> ';
    },
    list: function (page) {
        return '<span class="page_style list_page">'+page+'</span> ';
    }
}

var qpage_set={
    key:'page2',      // query string name
    list_limit:5,        // 생략가능: 보여줄 페이지당 자료 수
    page_limit:7,     // 생략가능: 보여줄 페이지 수
    list_total:130      // 필수입력: 총 자료수 
}

// 페이지 출력 
var paging=new QPaging(qpage_set);
// paging.pubset=qpage_style;
paging.display(['xpage_div','page_bottom','page_top']);

//or//   paging.display();
//or//   paging.display([]);
//or//   paging.display(['page_div']);

try{
    var str=' (총 '+ps.p_total+' 페이지, '+ps.l_total+' 자료)';
    document.getElementById('page_sub').innerHTML=str;
} catch (e) {alert("Error: "+e.message);}


// 목록 출력
cpage_list_print(paging);


//--------------------------
**/
