

function makeAJAXRequestByPOST(sUrl,postdata,callback){		
    YAHOO.util.Connect.asyncRequest('POST',sUrl,callback,postdata);
}
function makeAJAXRequestByGET(sUrl,callback){		
    YAHOO.util.Connect.asyncRequest('GET',sUrl,callback);
}

//function createTopNavButtonMouseOverEffects(){
//    var imgs=YAHOO.util.Dom.getElementsByClassName('top-navbar-button-image');
//
//    for(var key in imgs){
//        var img=imgs[key];
//
//        img.onmouseover=function(){
//            var imgSrc=this.src;
//
//
//            var imgSrcWithoutExt=imgSrc.substring(0,imgSrc.lastIndexOf('.'));
//
//            this.src=imgSrcWithoutExt + '_mouseover.png';
//        };
//        img.onmouseout=function(){
//            var imgSrc=this.src;
//            var imgSrcWithoutMouseoverAndExt=imgSrc.substring(0,imgSrc.indexOf('_'));
//            this.src=imgSrcWithoutMouseoverAndExt + '.png';
//        };
//
//    }
//}

//YAHOO.util.Event.onContentReady('top-navbar',function(){
//    //createTopNavButtonMouseOverEffects();
//    }
//    );
//
//YAHOO.util.Event.onContentReady('msn-live-chat',function(){
//
//    }
//    );


YAHOO.util.Event.onContentReady('book-search',function(){

    var oDS = new YAHOO.util.XHRDataSource( getPrefix() + "book/search");
    // Set the responseType
    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
    // Define the schema of the delimited results
    oDS.responseSchema = {
        recordDelim: "\n",
        fieldDelim: "\t"
    };
    // Enable caching
    oDS.maxCacheEntries = 5;

    // Instantiate the AutoComplete
    var oAC = new YAHOO.widget.AutoComplete("book-search-box", "book-search-hints", oDS);
    //oAC.animVert = false;
    //oAC.animSpeed = 0.5;
    oAC.maxResultsDisplayed = 5;
    //oAC.minQueryLength = 1;
    //oAC.queryDelay = 2;
    //oAC.autoHighlight = false;
    oAC.autoHighlight=false;
    oAC.useIFrame = true;
    oAC.allowBrowserAutocomplete = false;

}
);





function toggleShoppingCart(){
	
    var attributes;
    var sc=new YAHOO.util.Element('shopping-cart');
	
    if(sc.getStyle('height') == '380px'){
        attributes={
            height: {
                to: 0
            }
            };
    }else{
        attributes={
            height: {
                to: 380
            }
            };
    }
	
    var scAnim = new YAHOO.util.Anim('shopping-cart', attributes);
    scAnim.animate();
}


function checkoutShoppingCart(){

    var handleSuccess=function(o){
        El('shopping-cart').innerHTML=o.responseText;
    };
    var handleFailure=function(o){
        El('shopping-cart').innerHTML='Failed to connect to the server. Please try again.';
    };

    var callback={
        success:handleSuccess,
        failure:handleFailure
    };

    El('shopping-cart').innerHTML='處理中...';
    makeAJAXRequestByGET(getPrefix() + 'shoppingcart/checkout',callback);
    return false;

}

function updateShoppingCartDetails(){

    var form=El('shopping-cart-form');
    if(form==null) return false;
    
    YAHOO.util.Connect.setForm(form);
    var handleSuccess=function(o){
        El('shopping-cart').innerHTML=o.responseText;
        loadShoppingCart();
    };

    var handleFailure=function(o){
        El('shopping-cart').innerHTML='Failed to connect to the server. Please try again.';
    };

    var callback={
        success:handleSuccess,
        failure:handleFailure
    };
    El('shopping-cart').innerHTML='處理中...';
    makeAJAXRequestByPOST(form.action,null,callback);
    return false;

}

function isNullOrEmpty(s){
    if(s==null || YAHOO.lang.trim(s)=="") return true;
    return false;
}
function validateEmail(email){
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
    return emailPattern.test(email);
}


function sendQuotation(){

    var status=El('send-quotation-status');

    var dataInvalidMsg='資料未齊全或不正確．';
    var pendingMsg='處理中...';
    var successMsg='你的報價請求已成功發送．我們稍後將會根據你提供的聯絡方法與閣下聯絡．';
    var failureMsg='未能成功發送你的報價請求，這可能由於伺服器正在維護當中，請稍侯再試.';

    var form=El('quotation-form');
        
    if(!form || !status || status.innerHTML==pendingMsg) return false;

    form.validateData=function(){        
        var elNames=new Array("cust_name","book_title","width","height","num_of_copies","num_of_pages");
        for(var i in elNames){            
            var elText=this.elements[elNames[i]].value;
            if(isNullOrEmpty(elText))
                return false;
        }
        if(!validateEmail(this.elements["cust_email"].value)) return false;

        return true;
    }

    if(!form.validateData()){
        status.innerHTML=dataInvalidMsg;
        return false;
    }


    status.innerHTML=pendingMsg;

    var handleSuccess=function(o){
        if(o.responseText=='ok'){
            form.reset();
            status.innerHTML=successMsg;
        }
        else{
            var frog = window.open("","wildebeast","width=300,height=300,scrollbars=1,resizable=1");
            frog.document.open();
            frog.document.write(o.responseText);
            frog.document.close();
            
            status.innerHTML=failureMsg;
        }
    };

    var handleFailure=function(o){
        var frog = window.open("","wildebeast","width=300,height=300,scrollbars=1,resizable=1");
        frog.document.open();
        frog.document.write(o.responseText);
        frog.document.close();
        status.innerHTML=failureMsg;
    };

    var callback={
        success:handleSuccess,
        failure:handleFailure
    };

    YAHOO.util.Connect.setForm(form);
    makeAJAXRequestByPOST(form.action,null,callback);

    return false;
}


function updateShoppingCart(link){

    var handleSuccess=function(o){
        El('shopping-cart').innerHTML=o.responseText;
        loadShoppingCart();
        El('book-added-msg').innerHTML='提示: 可隨時使用網頁右上方的購物籃查看訂單.';
    };
    var handleFailure=function(o){
        El('shopping-cart').innerHTML='Failed to connect to the server. Please try again.';
    };
    var callback={
        success:handleSuccess,
        failure:handleFailure
    };
    El('shopping-cart').innerHTML='處理中...';
    makeAJAXRequestByGET(link + '?rand=' + Math.random()*10000000, callback);
    return false;
}

function loadShoppingCart(){


    var handleSuccess=function(o){
        El('shopping-cart').innerHTML=o.responseText;
    };
    var handleFailure=function(o){
        El('shopping-cart').innerHTML='Failed to connect to the server. Please try again.';
    };

    var callback={
        success:handleSuccess,
        failure:handleFailure
    };
	
    makeAJAXRequestByGET(getPrefix() + 'shoppingcart?rand=' + Math.random()*10000000,callback);


}



var loginPanel=null;

YAHOO.util.Event.onAvailable('login-panel',function(){
	
	
    loginPanel=new YAHOO.widget.Panel(this,{
        width:"260px",
        fixedcenter: true,
        visible:false,
        constraintoviewport:true
    });
    loginPanel.render();
	
    var loadLoginFormAndShow=function(){
	
        var handleSuccess=function(o){
            loginPanel.setBody(o.responseText);
            El('member_login_id').focus();
        };
		
        var handleFailure=function(o){
		
        };
		
        var callback={
            success:handleSuccess,
            failure:handleFailure
        };
		
        makeAJAXRequestByGET(getPrefix() + 'member/login',callback);
        loginPanel.setBody('Loading...');
        loginPanel.show();
		
    };
    YAHOO.util.Event.addListener("login", "click", loadLoginFormAndShow, loginPanel, true);

}
);
function reload(){ //this reload function ensures a GET request
    var loc = window.location;
    window.location = loc.protocol + '//' + loc.host + loc.pathname + loc.search;
}
function login(){
	
    var form=El('login-form');
    YAHOO.util.Connect.setForm(form);
	
    var handleSuccess=function(o){

        if(o.responseText=='granted'){
            //window.location.reload();
            reload();
        //loginPanel.hide();
        //loadMemberPanel();
        }else{
            loginPanel.setBody(o.responseText);
        }
    };
	
    var handleFailure=function(o){
        loginPanel.setBody('Failed to connect to the server. Please try again.');
    };
	
    var callback={
        success:handleSuccess,
        failure:handleFailure
    };
	
    makeAJAXRequestByPOST(form.action,null,callback);
	
    return false;

}


function jumpToAnchor(anchorName){
    window.location.hash=anchorName;
}