var PosHelper = {
getPosition : function(o){
	
	var nLt=0;
	var nTp=0;
	var offsetParent = o;
	
	while (offsetParent!=null && offsetParent!=document.body) {
			
			nLt+=offsetParent.offsetLeft;
			nTp+=offsetParent.offsetTop;
	
	if(!this.IsNav()){		
		parseInt(offsetParent.currentStyle.borderLeftWidth)>0?nLt+=parseInt(offsetParent.currentStyle.borderLeftWidth):"";
		parseInt(offsetParent.currentStyle.borderTopWidth)>0?nTp+=parseInt(offsetParent.currentStyle.borderTopWidth):"";	
		}	
	offsetParent=offsetParent.offsetParent;	
	}
	
	return {x:nLt, y:nTp}; 
},


IsIE:function(){
		return ( navigator.appName=="Microsoft Internet Explorer" ); 
},

IsNav:function (){
	return ( navigator.appName=="Netscape" );
},

SetOffset:function(sobj,tobj,x,y )
{

    if (typeof sobj == 'string') sobj = document.getElementById(sobj);    
    if (typeof tobj == 'string') tobj = document.getElementById(tobj);
    
    var pos = this.getPosition(sobj);
    if(tobj)
    {
        tobj.style.left= pos.x + x + "px";
        tobj.style.top = pos.y + y +  "px";			
        tobj.style.display="block";	
    }
}

}

function Ajax(url)
{
    this.m_xmlReq=false;
    this.Url=url;
    
    if(window.XMLHttpRequest)
    {
        this.m_xmlReq = new XMLHttpRequest();
        if(this.m_xmlReq.overrideMimeType)  this.m_xmlReq.overrideMimeType('text/xml');
    }
    else if(window.ActiveXObject)
    { 
       try
       {
            this.m_xmlReq = new ActiveXObject('Msxml2.XMLHTTP');
       }
       catch(e)
       {
          try
          {
              this.m_xmlReq = new ActiveXObject('Microsoft.XMLHTTP');
          }
          catch(e){}
        }
    }
    
    this.invokeServer=function(send_data,method)
    {
        if(!this.m_xmlReq)  return;
                        
        this.m_xmlReq.open(method,this.Url,false);
                
        if(method=='POST') 
        //this.m_xmlReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');            
         this.m_xmlReq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8"); 
         
        this.m_xmlReq.send(send_data.toString());             
        var result=null;
        if(this.m_xmlReq.status==200 && this.m_xmlReq.readyState == 4)
            eval("result="+this.m_xmlReq.responseText);  
        
        return result;     
                       
    }
}


var StringHelper = {
filter : function(str)
{
	var re1 = /(\<.[^\<]*\>)/g;
    return str.replace(/"/g,"").replace(/'/g,"").replace(/&/g,"").replace(/\\/g,"").replace(re1,"");
}

}

String.prototype.lenB   =   function(){return   this.replace(/[^\x00-\xff]/g,"**").length;}   

var StringBuilder = function(){
    this.cache = [];
    if(arguments.length)this.append.apply(this,arguments);
}
StringBuilder.prototype = {
    prepend:function(){
        this.cache.splice.apply(this.cache,[].concat.apply([0,0],arguments));
        return this;
    },
    append:function(){
        this.cache = this.cache.concat.apply(this.cache,arguments);
        return this;
    },
    toString:function(){
        return this.getString();
    },
    getString:function(){
        return this.cache.join('');    
    }
}



var reInnerHTML = function(ele,innerHtml) {
			var nA=navigator.appVersion;
			if(nA.indexOf('MSIE')>=0)var curIE=nA.substr(nA.indexOf('MSIE')+5,3);
			if (curIE){
				innerHtml=innerHtml.replace(/<script([^>]*)>/gi,"<script$1 defer=\"true\">");
				var reStartScript=/^(\s*<script)/gi;
				if (reStartScript.test(innerHtml)){
					innerHtml="<span style=\"display:none;\">Hack IE</span>"+innerHtml;
					ele.innerHTML=innerHtml;
					ele.removeChild(ele.firstChild);
				}else{
					ele.innerHTML=innerHtml;
				}

			}else{
				var newObj=document.createElement(ele.tagName);
				newObj.id=ele.id;
				newObj.className=ele.className;
				newObj.innerHTML = innerHtml;
				ele.parentNode.replaceChild(newObj,ele);
			}
		}
	
	

var XMLHttp = {
_createXMLHttpRequest : function()
     {
         if (window.XMLHttpRequest)  {  var objXMLHttp = new XMLHttpRequest();  }
         else
         {
             var MSXML = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
             var Count = MSXML.length;
             for(var i = 0; i < Count; i ++)
             {
                 try
                 {
                     var objXMLHttp = new ActiveXObject(MSXML[i]);        
                     break;
                 }
                 catch(e)
                 {
                 }
             }
          }          
        
         // mozilla某些版本没有readyState属性
         if (objXMLHttp.readyState == null) {
             objXMLHttp.readyState = 0;
             objXMLHttp.addEventListener("load", function ()
                 {
                     objXMLHttp.readyState = 4;                    
                     if (typeof objXMLHttp.onreadystatechange == "function") { objXMLHttp.onreadystatechange();}
                 },   false);
         }

         return objXMLHttp;
     },
     
_sendRequest : function(method, url, data, sendtype, datatype, callback, backpar)
     {
         var objXMLHttp = this._createXMLHttpRequest();        
         with(objXMLHttp)
         {
             try
             {
                 // 加随机数防止缓存
                 if (url.indexOf("?") > 0){ url += "&randnum=" + Math.random(); }
                 else{ url += "?randnum=" + Math.random();}
                
                
                 open(method, url, sendtype);              
                 setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");                
                 send(data);
                 
                   if(callback == null)
                   {
                      if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                         {
                         return objXMLHttp.responseText;
                         }
                   }
        
                 onreadystatechange = function ()
                 {                  
                     if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
                     {
                         if(callback != null){ 
                          if(backpar != null) callback(objXMLHttp,backpar); else callback(objXMLHttp); 
                         } else { return objXMLHttp.responseText; }
                     }
                 }
                
               
             }
             catch(e)
             {
                 alert(e+"/n"+'你的浏览器版本太低,建议你升级浏览器');
             }
         }
     }
    
    
}


//drop
function Position(x, y)
{
  this.X = x;
  this.Y = y;
    
  this.Add = function(val)
  {
    var newPos = new Position(this.X, this.Y);
    if(val != null)
    {
      if(!isNaN(val.X))
        newPos.X += val.X;
      if(!isNaN(val.Y))
        newPos.Y += val.Y
    }
    return newPos;
  }
  
  this.Subtract = function(val)
  {
    var newPos = new Position(this.X, this.Y);
    if(val != null)
    {
      if(!isNaN(val.X))
        newPos.X -= val.X;
      if(!isNaN(val.Y))
        newPos.Y -= val.Y
    }
    return newPos;
  }
  
  this.Min = function(val)
  {
    var newPos = new Position(this.X, this.Y)
    if(val == null)
      return newPos;
    
    if(!isNaN(val.X) && this.X > val.X)
      newPos.X = val.X;
    if(!isNaN(val.Y) && this.Y > val.Y)
      newPos.Y = val.Y;
    
    return newPos;  
  }
  
  this.Max = function(val)
  {
    var newPos = new Position(this.X, this.Y)
    if(val == null)
      return newPos;
    
    if(!isNaN(val.X) && this.X < val.X)
      newPos.X = val.X;
    if(!isNaN(val.Y) && this.Y < val.Y)
      newPos.Y = val.Y;
    
    return newPos;  
  }  
  
  this.Bound = function(lower, upper)
  {
    var newPos = this.Max(lower);
    return newPos.Min(upper);
  }
  
  this.Check = function()
  {
    var newPos = new Position(this.X, this.Y);
    if(isNaN(newPos.X))
      newPos.X = 0;
    if(isNaN(newPos.Y))
      newPos.Y = 0;
    return newPos;
  }
  
  this.Apply = function(element)
  {
    if(typeof(element) == "string")
      element = document.getElementById(element);
    if(element == null)
      return;
    if(!isNaN(this.X))
      element.style.left = this.X + 'px';
    if(!isNaN(this.Y))
      element.style.top = this.Y + 'px';  
  }
}

function hookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.addEventListener)
  {
    element.addEventListener(eventName, callback, false);
  }
  else if(element.attachEvent)
    element.attachEvent("on" + eventName, callback);
}

function unhookEvent(element, eventName, callback)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
    return;
  if(element.removeEventListener)
    element.removeEventListener(eventName, callback, false);
  else if(element.detachEvent)
    element.detachEvent("on" + eventName, callback);
}

function cancelEvent(e)
{
  e = e ? e : window.event;
  if(e.stopPropagation)
    e.stopPropagation();
  if(e.preventDefault)
    e.preventDefault();
  e.cancelBubble = true;
  e.cancel = true;
  e.returnValue = false;
  return false;
}

function getEventTarget(e)
{
  e = e ? e : window.event;
  return e.target ? e.target : e.srcElement;
}

function absoluteCursorPostion(eventObj)
{
  eventObj = eventObj ? eventObj : window.event;
  
  if(isNaN(window.scrollX))
    return new Position(eventObj.clientX + document.documentElement.scrollLeft + document.body.scrollLeft, 
      eventObj.clientY + document.documentElement.scrollTop + document.body.scrollTop);
  else
    return new Position(eventObj.clientX + window.scrollX, eventObj.clientY + window.scrollY);
}

function dragObject(element, attachElement, lowerBound, upperBound, startCallback, moveCallback, endCallback, attachLater)
{
  if(typeof(element) == "string")
    element = document.getElementById(element);
  if(element == null)
      return;
  
  if(lowerBound != null && upperBound != null)
  {
    var temp = lowerBound.Min(upperBound);
    upperBound = lowerBound.Max(upperBound);
    lowerBound = temp;
  }

  var cursorStartPos = null;
  var elementStartPos = null;
  var dragging = false;
  var listening = false;
  var disposed = false;
  
  function dragStart(eventObj)
  { 
    if(dragging || !listening || disposed) return;
    dragging = true;
    
    if(startCallback != null)
      startCallback(eventObj, element);
    
    cursorStartPos = absoluteCursorPostion(eventObj);
    
    elementStartPos = new Position(parseInt(element.style.left), parseInt(element.style.top));
   
    elementStartPos = elementStartPos.Check();
    
    hookEvent(document, "mousemove", dragGo);
    hookEvent(document, "mouseup", dragStopHook);
    
    return cancelEvent(eventObj);
  }
  
  function dragGo(eventObj)
  {
    if(!dragging || disposed) return;
    
    var newPos = absoluteCursorPostion(eventObj);
    newPos = newPos.Add(elementStartPos).Subtract(cursorStartPos);     
    
    newPos = newPos.Bound(lowerBound, upperBound)
    newPos.Apply(element);
    if(moveCallback != null)
      moveCallback(newPos, element, eventObj);
        
    return cancelEvent(eventObj); 
  }
  
  function dragStopHook(eventObj)
  {
    dragStop();
    return cancelEvent(eventObj);
  }
  
  function dragStop()
  {
    if(!dragging || disposed) return;
    unhookEvent(document, "mousemove", dragGo);
    unhookEvent(document, "mouseup", dragStopHook);
    cursorStartPos = null;
    elementStartPos = null;
    if(endCallback != null)
      endCallback(element);
    dragging = false;
  }
  
  this.Dispose = function()
  {
    if(disposed) return;
    this.StopListening(true);
    element = null;
    attachElement = null
    lowerBound = null;
    upperBound = null;
    startCallback = null;
    moveCallback = null
    endCallback = null;
    disposed = true;
  }
  
  this.StartListening = function()
  {
    if(listening || disposed) return;
    listening = true;
    hookEvent(attachElement, "mousedown", dragStart);
  }
  
  this.StopListening = function(stopCurrentDragging)
  {
    if(!listening || disposed) return;
    unhookEvent(attachElement, "mousedown", dragStart);
    listening = false;
    
    if(stopCurrentDragging && dragging)
      dragStop();
  }
  
  this.IsDragging = function(){ return dragging; }
  this.IsListening = function() { return listening; }
  this.IsDisposed = function() { return disposed; }
  
  if(typeof(attachElement) == "string")
    attachElement = document.getElementById(attachElement);
  if(attachElement == null)
    attachElement = element;
    
  if(!attachLater)
    this.StartListening();
}


function getCookie_one(name,type){
  var search;
  search = name + "=";
  var cookies=document.cookie.split(";")  ;
  
  if(type=="dangdang"){
    var dangdangcookie="";
     for(i=0;i<cookies.length;i++){
        if(cookies[i].indexOf("dangdang.com=")>-1){
            dangdangcookie=cookies[i].split("&");
            for(x=0;x<dangdangcookie.length;x++){
                if(dangdangcookie[x].indexOf(search)>-1){
                    return unescape(dangdangcookie[x].substring(search.length,dangdangcookie[x].length)); 
                }
            }
        }
     }  
      
  }else{
       for(i=0;i<cookies.length;i++){
        if(cookies[i].indexOf("dangdang.com=")<0){    
            if(cookies[i].indexOf(search)>-1){
                return unescape(cookies[i].substring(search.length+1,cookies[i].length));            
            }
        }
      }    
  }
  return "";    
}

//右边热门模块鼠标mover效果
var currId2 = '0';
function changTop2(newId)
{
	if( currId2!=null)
    {
	  document.getElementById('changeTop'+currId2+'_t').style.display="none";
	  document.getElementById('changeTop'+currId2).style.display="block";
	}	
	document.getElementById('changeTop'+newId+'_t').style.display="block";
	document.getElementById('changeTop'+newId).style.display="none";
	currId2 = newId;
}

//网友推荐mouseover效果
var curr_rec = '1';
function chang_Rec_o(newId)
{
	if( curr_rec!=null){
        document.getElementById('ch_rec'+curr_rec+'_t').style.display="none";
        document.getElementById('ch_rec'+curr_rec).style.display=""; 
        
        document.getElementById('ch_rec'+newId).style.display="none";
        document.getElementById('ch_rec'+newId+'_t').style.display="";
	}
	curr_rec = newId;
}

//当当人气mouseover效果
var curr_ubox = '0';
function chang_ubox_o(newId)
{
	if( curr_ubox!=null){
	    $('#u_box_'+curr_ubox+'_t').hide();
	    $('#u_box_'+curr_ubox).show();

	    $('#u_box_'+newId).hide();
	    $('#u_box_'+newId+'_t').show();
	}
	curr_ubox = newId;//重置当前放大元素变量
}



function isBuy(productId)
{
    var send_data = "product_id="+productId;
    var result = XMLHttp._sendRequest('POST', "/callback/isbuyproduct.php", send_data, false)
    if(result =='1')return true;
    return false;
}

var curr = '1';
function chang_Rec(newId)
{
	if( curr!=null){
        document.getElementById('ch_r'+curr+'_t').style.display="none";
        document.getElementById('ch_r'+curr).style.display=""; 
        
        document.getElementById('ch_r'+newId).style.display="";
        document.getElementById('ch_r'+newId+'_t').style.display="";
	}
	curr = newId;
}
