var search_mode=0;
var is_iframe=false;
var show_shape=false;
var show_lwratio=true;

var low_price=0;
var mid_price=5000;
var high_price=10000;

var arrDE=new Array();
var arrDC=new Array();
var arrDS=new Array();
var show_lwratio=true;
var PAGESIZE=200;
var _pages;
var _avg_price_ct=1000;

var dl_empty='<TABLE ID="dl_data" WIDTH="100%" BORDER=0 CELLSPACING=0 CELLPDING=0  style="table-layout:fixed;">'
			+'<TR height=0><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=50></TD><TD WIDTH=50></TD></TR>'
			+'<TR id="insert_here"><TD colspan="9"></TD></TR></TABLE>';
var dl_tr_format='<TR height=0><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=50></TD><TD WIDTH=50></TD></TR>';
var dl_start = '<TABLE ID="dl_data" WIDTH="100%" BORDER=0 CELLSPACING=0 CELLPDING=0  style="table-layout:fixed;">';
var dl_tr='<TR CLASS=trb OnMouseOver="row_on(this);" OnMouseOut="row_off(this);" id="d_tr_';
var dl_tr_b = '<TR CLASS=trb OnMouseOver="row_on(this);" OnMouseOut="row_off(this,\'#E5E9EE\');" id="d_tr_';
var dl_tr_w = '<TR CLASS=trw OnMouseOver="row_on(this);" OnMouseOut="row_off(this,\'#FFFFFF\');" id="d_tr_';

var dl_tds = '</TD><TD>';
var dl_link = '<a target="_self" href="javascript:go_detail(\'';
var dl_linkimg = '\')">查看</a></TD></TR>';
var dl_end = '</TABLE>';
var div_ori='<div id="insert_here"></div>';

var _total=0;
var _timeout;
var _loaded=false;
var _filtered=true;
var _pageindex=0;
var pre_t='<TABLE ID="dl_data" WIDTH="100%" BORDER=0 CELLSPACING=0 cellpadding=0  style="table-layout:fixed;">'
			+'<TR height=0><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=70></TD><TD WIDTH=50></TD><TD WIDTH=50></TD></TR>'

var TIMEOUT=1;
function de(id,pos,cut,color,clarity,ct,lwratio,lab,dprice,compare,polish,symetry)
{
	this.pid=id;
	this.pos=pos; 
	this.cut = cut;//'戴维尼<br>签注';
	this.color=color; 
	this.clarity=clarity;
	this.carat=ct; 
	this.disp_carat=toFixed(ct); 
	this.polsym=polish+'/'+symetry; 
	this.lwratio=toFixed(lwratio); 
	this.report=lab; 
	this.price=dprice;
	this.disp_price=toCurr(dprice);
	
	this.filtered=false;
	this.checked=compare; 
	this.tr=null;
	
	arrDE[pos]=this;
	_total++;
	 
}

de.prototype.draw_data = function()
{
	var s='';
	var dl_tr=(this.pos % 2 == 1) ? dl_tr_b : dl_tr_w; 
	s=dl_tr+this.pid+'"><TD>'+this.cut+'</td><td>'+this.color+'</td><td>'
		+this.clarity+'</td><td>'+this.disp_carat+'</td><td>';
		
	if(show_lwratio) 
	{
		s+=this.lwratio;
	}
	else
	{
		s+=this.polsym;
	}
	s+='</td><td>'+this.report+'</td><td>'+this.disp_price+'</td><td>';
	
	var checked=(this.checked == 1) ? ' CHECKED' : ''; 
	s+=	'<INPUT TYPE=checkbox  OnClick="arrDE['+this.pos+'].checked=this.checked;" STYLE="cursor:auto" VALUE='
		+this.pid+checked+'>'+'</td><td align="center">';
	s+=dl_link+this.pid+dl_linkimg;
	return s;
};


function initData()
{
	_pages=Math.ceil(_total/200);
	clear_data();
	arrDS=arrDE.slice(0);
	reset_loadingstatus();
	_timeout=setTimeout("mp()",TIMEOUT);
}
																				
function mp() 
{
	clearTimeout(_timeout);
	var els = document.all.loading_status;
	var esf = document.all.status_fill;
	var ese = document.all.status_empty;
	var pc=document.all.load_percent;
	var ddata=document.all.div_data;
	
	if(!_loaded)
	{
		if(_pageindex<_pages-1)
		{
			esf.style.width = parseInt((_pageindex+1)*100/_pages)+'%';
			ese.style.width = parseInt((_pages-1-_pageindex)*100/_pages)+ '%';
		}
		
		pc.innerHTML='...完成'+esf.style.width+'...';
		loadData();
		var tdiv=document.createElement("<div>");
		tdiv.innerHTML=pre_t+arrDC.join(' ')+'</table>';
		ddata.insertBefore(tdiv,document.all.insert_here);
		
		_pageindex++;
		_timeout=setTimeout("mp()",TIMEOUT);
	}
	else
	{
		els.style.display='none';
		esf.style.width='0%';
		ese.style.width='100%';
		
	}
	
}

function loadData()
{
	arrDC.length=0;
	var ftotal=arrDS.length;
	var rows=Math.ceil(ftotal/_pages);
	if(_pageindex*rows>ftotal || ftotal==0)
	{
		_loaded=true;
		return;
	}
	
	var j=0;
	for(var i=_pageindex*rows;i<ftotal && i<(_pageindex+1)*rows;++i)
	{
		arrDC[j]=arrDS[i].draw_data();
		++j;
	}
	
}

function clear_data()
{
	document.all.div_data.innerHTML="<div id=\"insert_here\"></div>";
	_loaded=false;
	_pageindex=0;
	arrDS.length=0;
	
}

function reset_loadingstatus()
{
	var count=arrDS.length;
	document.all.diamond_count.innerHTML=count+"颗";
	_pages=count/PAGESIZE;
	if(count>PAGESIZE) 
	{
		document.all.load_percent.innerHTML='完成0%';
		document.all.status_fill.style.width='0%';
		document.all.status_empty.style.width='100%';
		document.all.loading_status.style.display='';
	}
	else
	{
		document.all.loading_status.style.display='none';
	}
}




function go_detail(pid)
{
	if(is_iframe)
	{
		var Usage=func_getQueryString('Usage');
		//alert(Usage);
		if(search_mode==1)
		{
			if(Usage)
			{
				location.href='../diy/3d_detail.aspx?Usage='+Usage+'&DiamondID='+pid;
			}
			else
			{
				location.href='../diy/3d_detail.aspx?DiamondID='+pid;
			}
		}
		else
		{
			if(Usage)
			{
				location.href='../diy/d_detail.aspx?Usage='+Usage+'&DiamondID='+pid;
			}
			else
			{
				location.href='../diy/d_detail.aspx?DiamondID='+pid;
			}
		}
		
	}
	else
	{
		window.location.href='../diamond/signature_detail.aspx?DiamondID='+pid;
	}
}


function row_on(row) 
{
	row.setAttribute("initcolor",row.style.backgroundColor);
	row.style.backgroundColor='#B7C3CF';
	row.style.color='#000000';
	row.style.cursor='hand';
}

function row_off(row) 
{
	row.style.backgroundColor=row.getAttribute("initcolor");
	row.style.color='#555555';
}



function toFixed(fixNum) 
{
	fixNum = fixNum.toString();
	if (fixNum.length == 1)
	{
		fixNum = fixNum + '.00';
	}
	else if (fixNum.substr(fixNum.indexOf('.')+1,2).length < 2) 
	{
		fixNum = fixNum + '0';
	}
	return fixNum;
}

function toCurr(currNum) 
{
	if(!currNum) return '';
	currNum = currNum.toString();
	if (currNum.length > 3) 
	{
		currNum = currNum.substr(0,currNum.length-3) + ',' + currNum.substr(currNum.length-3,3);
	}
	return '￥' + currNum;
}

//////////////////////////////////////////////////////////////////////////

function sort_data(field,d)
{
	clearTimeout(_timeout);
	document.all.div_data.innerHTML=div_ori;
	
	_pageindex=0;
	switch(field)
	{
		case "ct":
			if(d=="up")
			{
				quick_sort_ct_asc(arrDS,0,arrDS.length-1);
			}
			else
			{
				quick_sort_ct_desc(arrDS,0,arrDS.length-1);
			}
			break;
		case "color":
			if(d=="up")
			{
				quick_sort_color_asc(arrDS,0,arrDS.length-1);
			}
			else
			{
				quick_sort_color_desc(arrDS,0,arrDS.length-1);
			}
			break;
		case "clarity":
			if(d=="up")
			{
				quick_sort_clarity_asc(arrDS,0,arrDS.length-1);
			}
			else
			{
				quick_sort_clarity_desc(arrDS,0,arrDS.length-1);
			}
			break;
		case "cut":
			if(d=="up")
			{
				quick_sort_cut_asc(arrDS,0,arrDS.length-1);
			}
			else
			{
				quick_sort_cut_desc(arrDS,0,arrDS.length-1);
			}
			break;
		case "dprice":
			if(d=="up")
			{
				quick_sort_price_asc(arrDS,0,arrDS.length-1);
			}
			else
			{
				quick_sort_price_desc(arrDS,0,arrDS.length-1);
			}
			break;
		case "lwratio":
			if(d=="up")
			{
				quick_sort_lwratio_asc(arrDS,0,arrDS.length-1);
			}
			else
			{
				quick_sort_lwratio_desc(arrDS,0,arrDS.length-1);
			}
			break;
		
	}
	
	
	
	var count=arrDS.length;
	for(var i=0;i<count;++i)
	{
		arrDS[i].pos=i;
	}
	
	_loaded=false;
	document.all.loading_status.style.display='';
	_timeout=setTimeout("mp()",TIMEOUT);
}


function dprice_asc(a,b) 
{
	return a.price - b.price; 
}

function dprice_desc(a,b) 
{ 
	return b.price - a.price; 
}

function ct_asc(a,b) 
{ 
	return a.carat - b.carat; 
}

function ct_desc(a,b) 
{
	return b.carat - a.carat; 
}

function lw_ratio_asc(a,b)
{
	return a.lwratio - b.lwratio; 
}

function lw_ratio_desc(a,b) 
{
	return b.lwratio - a.lwratio; 
}

function num_asc(a,b)
{
	return a-b;
}

var clarityRef = ' SI2 SI1 VS2 VS1 VVS2 VVS1 IF FL ';
function clarity_asc(a,b) 
{
	return clarityRef.indexOf(' '+a.clarity+' ') - clarityRef.indexOf(' '+b.clarity+' '); 
}

function clarity_desc(a,b) 
{
	return clarityRef.indexOf(' '+b.clarity+' ') - clarityRef.indexOf(' '+a.clarity+' '); 
}

var cutRef = 'FA GD VG ID';
function cut_asc(a,b) 
{
	return cutRef.indexOf(a.cut) - cutRef.indexOf(b.cut); 
}

function cut_desc(a,b) 
{ 
	return cutRef.indexOf(b.cut) - cutRef.indexOf(a.cut); 
}

var colorRef = 'PONMLKJIHGFED';
function color_asc(a,b) 
{ 
	return colorRef.indexOf(a.color) - colorRef.indexOf(b.color); 
}
function color_desc(a,b)
{ 
	return colorRef.indexOf(b.color) - colorRef.indexOf(a.color);
}

function getCtArrayByAsc()
{
	var arr=new Array();
	for(var i=0;i<_total;++i)
	{
		arr[i]=arrDE[i].carat;
	}
	quick_sort(arr,0,arr.length-1);
	return arr;
}

function getPriceArrayByAsc()
{
	var arr=new Array();
	for(var i=0;i<_total;++i)
	{
		arr[i]=arrDE[i].price;
	}
	quick_sort(arr,0,arr.length-1);
	return arr;
}

function quick_sort(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((pData[i]<middle) && (i<right)) i++;           
        while((pData[j]>middle) && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort(pData,left,j);
    if(right>i)   quick_sort(pData,i,right);
}

function quick_sort_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((pData[i]>middle) && (i<right)) i++;           
        while((pData[j]<middle) && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_desc(pData,left,j);
    if(right>i)   quick_sort_desc(pData,i,right);
}

function quick_sort_function(pData, left, right,func)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(func(pData[i],middle)<0 && (i<right)) i++;           
        while(func(pData[j],middle)>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_function(pData,left,j,func);
    if(right>i)   quick_sort_function(pData,i,right,func);
}

function quick_sort_ct_asc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((pData[i].carat-middle.carat)<0 && (i<right)) i++;           
        while((pData[j].carat-middle.carat)>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_ct_asc(pData,left,j);
    if(right>i)  quick_sort_ct_asc(pData,i,right);
}

function quick_sort_ct_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((pData[i].carat-middle.carat)>0 && (i<right)) i++;           
        while((pData[j].carat-middle.carat)<0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_ct_desc(pData,left,j);
    if(right>i)  quick_sort_ct_desc(pData,i,right);
}

function quick_sort_price_asc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(pData[i].price-middle.price<0 && (i<right)) i++;           
        while(pData[j].price-middle.price>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_price_asc(pData,left,j);
    if(right>i)  quick_sort_price_asc(pData,i,right);
}

function quick_sort_price_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(pData[i].price-middle.price>0 && (i<right)) i++;           
        while(pData[j].price-middle.price<0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_price_desc(pData,left,j);
    if(right>i)  quick_sort_price_desc(pData,i,right);
}

function quick_sort_lwratio_asc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((pData[i].lwratio-middle.lwratio)<0 && (i<right)) i++;           
        while((pData[j].lwratio-middle.lwratio)>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_lwratio_asc(pData,left,j);
    if(right>i)  quick_sort_lwratio_asc(pData,i,right);
}

function quick_sort_lwratio_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((pData[i].lwratio-middle.lwratio)>0 && (i<right)) i++;           
        while((pData[j].lwratio-middle.lwratio)<0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_lwratio_desc(pData,left,j);
    if(right>i)  quick_sort_lwratio_desc(pData,i,right);
}


function quick_sort_cut_asc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((cutRef.indexOf(pData[i].cut) - cutRef.indexOf(middle.cut))<0 && (i<right)) i++;           
        while((cutRef.indexOf(pData[j].cut) - cutRef.indexOf(middle.cut))>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_cut_asc(pData,left,j);
    if(right>i)  quick_sort_cut_asc(pData,i,right);
}

function quick_sort_cut_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((cutRef.indexOf(pData[i].cut) - cutRef.indexOf(middle.cut))>0 && (i<right)) i++;           
        while((cutRef.indexOf(pData[j].cut) - cutRef.indexOf(middle.cut))<0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_cut_desc(pData,left,j);
    if(right>i)  quick_sort_cut_desc(pData,i,right);
}

function quick_sort_color_asc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(colorRef.indexOf(pData[i].color) - colorRef.indexOf(middle.color)<0 && (i<right)) i++;           
        while(colorRef.indexOf(pData[j].color) - colorRef.indexOf(middle.color)>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_color_asc(pData,left,j);
    if(right>i)  quick_sort_color_asc(pData,i,right);
}

function quick_sort_color_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(colorRef.indexOf(pData[i].color) - colorRef.indexOf(middle.color)>0 && (i<right)) i++;           
        while(colorRef.indexOf(pData[j].color) - colorRef.indexOf(middle.color)<0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_color_desc(pData,left,j);
    if(right>i)  quick_sort_color_desc(pData,i,right);
}



function quick_sort_clarity_asc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((clarityRef.indexOf(' '+pData[i].clarity+' ') - clarityRef.indexOf(' '+middle.clarity+' '))<0 && (i<right)) i++;           
        while((clarityRef.indexOf(' '+pData[j].clarity+' ') - clarityRef.indexOf(' '+middle.clarity+' '))>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_clarity_asc(pData,left,j);
    if(right>i)  quick_sort_clarity_asc(pData,i,right);
}

function quick_sort_clarity_desc(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while((clarityRef.indexOf(' '+pData[i].clarity+' ') - clarityRef.indexOf(' '+middle.clarity+' '))>0 && (i<right)) i++;           
        while((clarityRef.indexOf(' '+pData[j].clarity+' ') - clarityRef.indexOf(' '+middle.clarity+' '))<0 && (j>left))  j--;
        if(i<=j)
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_clarity_desc(pData,left,j);
    if(right>i)  quick_sort_clarity_desc(pData,i,right);
}





function numeric_asc(a,b)
{
	return parseFloat(a)-parseFloat(b);
}




//////////////////////////////////////////////////////////////////
function sort_poliy(policy)
{
	if(arrDS.length<=1) return;
	
	clearTimeout(_timeout);
	document.all.div_data.innerHTML=div_ori;
	_pageindex=0;
	switch(policy)
	{
		case "balance":
			quick_sort_balance(arrDS,0,arrDS.length-1);
			break;
		case "quality":
			quick_sort_quality(arrDS,0,arrDS.length-1);
			break;
		case "biggest":
			quick_sort_biggest(arrDS,0,arrDS.length-1);
			break;
	}
	var count=arrDS.length;
	for(var i=0;i<count;++i)
	{
		arrDS[i].pos=i;
	}
	
	_loaded=false;
	document.all.loading_status.style.display='';
	_timeout=setTimeout("mp()",TIMEOUT);
	
}

function quick_sort_balance(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(Math.abs(pData[i].price/pData[i].carat-_avg_price_ct)-Math.abs(middle.price/middle.carat-_avg_price_ct)<0 && (i<right)) i++;           
        while(Math.abs(pData[j].price/pData[i].carat-_avg_price_ct)-Math.abs(middle.price/middle.carat-_avg_price_ct)>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);
	
    
    if(left<j)  quick_sort_balance(pData,left,j);
    if(right>i)  quick_sort_balance(pData,i,right);
}

function quick_sort_quality(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(pData[i].price/pData[i].carat-middle.price/middle.carat>0 && (i<right)) i++;           
        while(pData[j].price/pData[i].carat-middle.price/middle.carat<0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_quality(pData,left,j);
    if(right>i)  quick_sort_quality(pData,i,right);
}

function quick_sort_biggest(pData, left, right)
{
    var i,j;
    var middle,iTemp;
    i = left;
    j = right;
    middle = pData[Math.floor((left+right)/2)];  
    do{
        while(pData[i].price/pData[i].carat-middle.price/middle.carat<0 && (i<right)) i++;           
        while(pData[j].price/pData[i].carat-middle.price/middle.carat>0 && (j>left))  j--;
        if(i<=j)
        {
            iTemp = pData[i];
            pData[i] = pData[j];
            pData[j] = iTemp;
            i++;
            j--;
        }
    }while(i<=j);

    
    if(left<j)  quick_sort_biggest(pData,left,j);
    if(right>i)  quick_sort_biggest(pData,i,right);
}

function compare_diamond()
{
	var s='';
	for(var i=0;i<arrDS.length;++i)
	{
		if(arrDS[i].checked) s+=','+arrDS[i].pid;
	}
	if(s!='') s=s.substring(1);
 	if(s!='') func_sendHttp('../diamond/Register_compare.aspx',s);
 	if(is_iframe)
 	{
 		window.parent.location='../order/diamond_comparison.aspx';
 	}
 	else
 	{
 		window.location='../order/diamond_comparison.aspx';
 	}
}

function filter_price(filter_type)
{
	clear_data();
	
	document.all.filter_low.innerHTML = '<A HREF="javascript:void(filter_price(\'low\'));">'+toCurr(low_price)+'以下</A>';
	document.all.filter_mid.innerHTML = '<A HREF="javascript:void(filter_price(\'mid\'));">'+toCurr(low_price)+'—'+toCurr(high_price)+'</A>';
	document.all.filter_high.innerHTML = '<A HREF="javascript:void(filter_price(\'high\'));">'+toCurr(high_price)+'以上</A>';
	document.all.filter_all.innerHTML = '<A HREF="javascript:void(filter_price(\'all\'));">全部钻石</A>';
	var min_p=0;
	var max_p=9999999;
	if (filter_type == 'low') 
	{
		document.all.filter_low.innerHTML = '<b>'+toCurr(low_price)+'以下</b>';
		max_p=low_price;
	}
	else if (filter_type == 'mid') 
	{
		document.all.filter_mid.innerHTML = '<b>'+toCurr(low_price)+'—'+toCurr(high_price)+'</b>';
		min_p=low_price;
		max_p=high_price;
	}
	else if (filter_type == 'high') 
	{
		document.all.filter_high.innerHTML = '<b>'+toCurr(high_price)+'以上</b>';
		min_p=high_price;
	}
	else 
	{
		document.all.filter_all.innerHTML = '';
	}
	fil_d = 0;
	for(var i=0;i<arrDE.length;i++) 
	{
		if ((arrDE[i].price < min_p) || (arrDE[i].price > max_p)) 
		{
			arrDE[i].filtered = true;
		}
		else
		{
			arrDE[i].pos = fil_d;
			arrDE[i].filtered = false;
			arrDS[fil_d]=arrDE[i];
			fil_d++;
		}
		
	}
	
	reset_loadingstatus();
	_timeout=setTimeout("mp()",TIMEOUT);
}