﻿function GetDomainAvailability(strdomainName) 
{      
    PageMethods.DomainAvailable(strdomainName, onSucceeded, OnFailed);
}

function AddToCart(strdomainName, strSessionId)
{   
    PageMethods.AddToCart(strdomainName, strSessionId, onSucceededCart, onFailedCart);
}

function AddToCartSuggestionDomain(strdomainName, strSessionId)
{   
    PageMethods.AddToCart(strdomainName, strSessionId, onSucceededCart, onFailedCart);  
}

// Callback function invoked on successful completion of the page method.
function onSucceeded(result, userContext, methodName)
{
    var strDomainName;
    var strDomainStatus;
       
    if (methodName == 'DomainAvailable')
    {
        strDomainName = xmlTagValue(result, "DomainName")
        strDomainStatus = xmlTagValue(result, "DomainStatus");
        
        if (strDomainStatus == 'AVAIL')
        {
            UpdateSearchWhenAvailable(strDomainName, strDomainStatus);
        }
        else if (strDomainStatus == 'UNAVA')
        {
            UpdateSearchWhenUnAvailable(strDomainName, strDomainStatus);
        }       
        else if (strDomainStatus == 'UNKNW')
        {
            UpdateSearchWhenUnKnown(strDomainName, strDomainStatus);
        }
        else if (strDomainStatus == 'INCART') {
           	UpdateSearchWhenInCart(strDomainName, strDomainStatus);
        }
        else
        {
            // domain name validation error
            UpdateSearchWhenInvalid(strDomainName, strDomainStatus);
        }
    }
}

function UpdateSearchWhenAvailable(strDomainName, strDomainStatus)
{
    var imgElement;
    var hdElement;
    var chkElement;   
    
    ToggleAvailTags(strDomainName, strDomainStatus);      
    
    // now show the AddToCart image (by default is hidden)
    imgElement = document.getElementById("imgRes" + strDomainName);
    if (imgElement){
        imgElement.style.display = "block";
    }
    
    // make sure the separator is visible
    separator = document.getElementById("spanSepar" + strDomainName);
    if (separator)
    {
        //alert("objectNull? (" + separator + ") - separator style: (" + separator.style.display + ")");
        separator.style.display = "inline";
    }

    chkElement = document.getElementById("chosenlist_" + strDomainName);
    
    if (chkElement) {
        chkElement.style.display = "block";
        chkElement.checked=true;
    }    
    // set hidden fields (domain is available, so we can add it to the cart)
    hdElement = document.getElementById("basketStat" + strDomainName);
    if (hdElement){
        hdElement.setAttribute( "value", 'add' );                
    }    
}

function UpdateSearchWhenUnAvailable(strDomainName, strDomainStatus)
{
    var aWhois;
    var displayWhois;
    var displayElement;
    var whoIsURL; 
    var protocol = "";
    var spanSepar;
    var re;
    var paramType = "";
    var sid;
    
    ToggleAvailTags(strDomainName, strDomainStatus);
        
    // replace AddToCart image w/ Make Offer link
    displayElement = document.getElementById("aRes" + strDomainName);
    if (displayElement){
        // http://www.sedo.com/checkdomainoffer.php4?partnerid=23478&language=us&domain=domain.com
        displayElement.innerHTML = "Make Offer"
        displayElement.setAttribute( "href", 'http://www.sedo.com/checkdomainoffer.php4?partnerid=23478&language=us&domain=' + strDomainName );
        displayElement.setAttribute( "target", '_blank' );      
    }
    btnSelected = document.getElementById("btnSelected" + strDomainName);
    if (btnSelected)
    {
        separator = document.getElementById("spanSepar" + strDomainName);
        if (separator){ separator.style.display = "none"; }
        btnSelected.style.display = "none";
    } else {
        separator = document.getElementById("spanSepar" + strDomainName);
        if (separator)
            separator.style.display = "inline";
    }    
    // show WHOIS link
    displayWhois = document.getElementById("aWHOIS" + strDomainName);
    // prepare WHOIS URL
    protoRe = new RegExp("(http|https):\/\/[^/]+\/(www.webnames.ca\/|)","gi")
    protocol = document.URL.match(protoRe);
    whoIsURL = protocol + "whois.aspx?domain=" + strDomainName;    
    if (displayWhois){
        displayWhois.innerHTML = "Whois"
        displayWhois.setAttribute("href", whoIsURL);
        displayWhois.setAttribute("target", '_blank');
    }    
    // show the separator | betweek the links above
    spanSepar = document.getElementById("spanSepar" + strDomainName);
    if (spanSepar){
        spanSepar.innerHTML = "&nbsp;|&nbsp;"
    }
}

function UpdateSearchWhenInvalid(strDomainName, strDomainStatus)
{
    var aWhois;
    var displayWhois;
    var displayElement;
    var whoIsURL; 
    var spanSepar;

    btnSelected = document.getElementById("btnSelected" + strDomainName);
    if (btnSelected)
    {
        separator = document.getElementById("spanSepar" + strDomainName);
        if (separator){ separator.style.display = "none"; }
        btnSelected.style.display = "none";
    } else {
        separator = document.getElementById("spanSepar" + strDomainName);
        if (separator)
            separator.style.display = "inline";
    }    
    
    ToggleAvailTags(strDomainName, strDomainStatus);
}

function UpdateSearchWhenInCart(strDomainName, strDomainStatus) {
	var aWhois;
	var displayWhois;
	var displayElement;
	var whoIsURL;
	var protocol = "";
	var spanSepar;
	var re;
	var paramType = "";
	var sid;

	ToggleAvailTags(strDomainName, strDomainStatus);

	btnSelected = document.getElementById("btnSelected" + strDomainName);
	if (btnSelected) {
	    separator = document.getElementById("spanSepar" + strDomainName);
		if (separator) { separator.style.display = "none"; }
		btnSelected.style.display = "none";
	} else {
	    separator = document.getElementById("spanSepar" + strDomainName);
		if (separator)
			separator.style.display = "none";
	}

	// show Cart link
	displayWhois = document.getElementById("aWHOIS" + strDomainName);
	// prepare WHOIS URL
	protoRe = new RegExp("(http|https):\/\/[^/]+\/(www.webnames.ca\/|)", "gi")
	protocol = document.URL.match(protoRe);
	whoIsURL = protocol + "sc\/domainPackages.aspx";
	if (displayWhois) {
		displayWhois.innerHTML = "Go to Cart"
		displayWhois.setAttribute("href", whoIsURL);
		displayWhois.style.display = "inline";
	}
}

function UpdateSearchWhenUnKnown(strDomainName, strDomainStatus)
{
    ToggleAvailTags(strDomainName, strDomainStatus);
}

// toggle avaliabilty status tags
function ToggleAvailTags(strDomainName, strDomainStatus)
{
    var imgURL;    
    var obj1 = document.getElementById("imgAvail" + strDomainName);
    var obj2 = document.getElementById("sAvail" + strDomainName);
    imgURL = document.getElementById("imgURL").value;
    
    if (obj1 && obj2) {
        if (strDomainStatus == 'AVAIL'){
          obj1.src = imgURL + "images/wn4/icon_available.gif" ;
          obj2.innerHTML = "Available"
        }
        else if (strDomainStatus == 'UNAVA'){
          obj1.src = imgURL + "images/wn4/icon_unavailable.gif" ;          
          obj2.innerHTML = "Taken"
        }
        else if (strDomainStatus == 'UNKNW') {
          obj1.src = imgURL + "images/wn4/icon_unavailable.gif" ;
          obj2.innerHTML = "Temporary registry communication error."
         }
        else if (strDomainStatus == 'INCART' || strDomainStatus == 'ADDED') {
         	obj1.src = imgURL + "images/wn4/star.gif";
         	obj2.innerHTML = "Added to Cart"
        }        
        else {
          obj1.src = imgURL + "images/wn4/icon_unavailable.gif" ;
          obj2.innerHTML = strDomainStatus
        }
    }
}


function OnFailed(error, userContext, methodName) 
{
    if(error !== null) 
    {
        //alert(error.get_message());
        //alert("There is a connection problem to the registry. Please try again.");
    }
}

// domain search cart handlers
function onSucceededCart(result, userContext, methodName)
{
    var hdElement;
    var imgElement;
    var displayElement;
    var strDomainName;
    var strErrorMessage;

    
    if (result.toUpperCase().indexOf("NOT_OK") >= 0){
		// Prebook check
    	var strPrebookExt = xmlTagValue(result, "PrebookExtension");
    	if (strPrebookExt != '') {
			strErrorMessage = "It is not possible yet to mix in the shopping cart " + strPrebookExt.toUpperCase() + " domains with other extensions.<br/>";
		}

		// General error
		var sMiscErr = xmlTagValue(result, "displayerror");
		if (sMiscErr != '') { strErrorMessage = sMiscErr; }
		
		if (strErrorMessage != '') { DisplayErrorMessage(strErrorMessage); return; }
    }
    else{
        DisplayErrorMessage("");
    }

    strDomainName = xmlTagValue(result, "DomainName");

    UpdateSearchWhenInCart(strDomainName, 'INCART');
    
    // Update status for this domain
    hdElement = document.getElementById("basketStat" + strDomainName);
    if ( hdElement == null ) {
        // try domain suggestions control
        hdElement = document.getElementById("suggestBasketStat" + strDomainName);
    }
    if(hdElement){
        hdElement.setAttribute("value", 'added'); 
    }
        
    // hide AddToCart button
    imgElement = document.getElementById("imgRes" + strDomainName);
    if (imgElement ==null) {
        // try domain suggestions control
        imgElement = document.getElementById("imgSuggest" + strDomainName);
    }
    if(imgElement){
        imgElement.style.display = "none";
    }

//    // display 'Added to Cart' message instead of the image button
//    displayElement = document.getElementById("addedStatus" + strDomainName);
//    if (displayElement==null) {
//        // try domain suggestions control
//        displayElement = document.getElementById("addedStatSuggest" + strDomainName);
//    }
//    if (displayElement) {
//    	if (xmlTagValue(result, "newcartlink") != '') {
//    		displayElement.innerHTML = '<a href="' + xmlTagValue(result, "newcartlink") + '">Already in Shopping Cart</a>';
//    		
//    		// New Cart piggybacks on the js cart methods
//    		aSelect = document.getElementById("aRes" + strDomainName);
//    		if (aSelect) {
//    			aSelect.style.display = "none";
//    		}
//    		btnSelected = document.getElementById("btnSelected" + strDomainName);
//    		if (btnSelected) {
//    		    separator = document.getElementById("spanSepar" + strDomainName);
//    			if (separator) { separator.style.display = "none"; }
//    			btnSelected.style.display = "none";
//    		}    		
//    	}
//    	else {
//    		displayElement.innerHTML = 'Added to Cart';
//    	}
//    }

    // now let's refresh the cart
    // (sDomainSearchCartUniqueID is an injected from server-side code, 
    //  to allow us to trigger a post-back that updates only the DomainSearchCart UpdatePanel)
    __doPostBack(sDomainSearchCartUniqueID, '');            
}

function onFailedCart(result, userContext, methodName)
{
    if(error !== null){
       //alert(error.get_message());
       alert("There is an error while adding to the cart. Please try again.");
    }
}

// After removing the domain from the basket, 
// we need to show AddToCart image
function changeStatus(strDomainName, newStatus) {
    var displayElement;
    var hdElement;
    var imgElement;
    
    hdElement = document.getElementById("basketStat" + strDomainName);
    if(!hdElement){
        // try domain suggestions control
        hdElement = document.getElementById("suggestBasketStat" + strDomainName);
    }
    
    if (hdElement){
    	if (hdElement.value == "added") {
			// mark domain as not in cart
        	hdElement.setAttribute("value", 'add');
            
            imgElement = document.getElementById("imgRes" + strDomainName);
            if(!imgElement){
                // try domain suggestions control
                imgElement = document.getElementById("imgSuggest" + strDomainName);
            }
            imgElement.style.display = "inline";

            // hide go to cart link
            displayWhois = document.getElementById("aWHOIS" + strDomainName);
            displayWhois.innerHTML = "";
            displayWhois.style.display = "none";

            ToggleAvailTags(strDomainName, newStatus);
            
			// remove added status text
            displayElement = document.getElementById("addedStatus" + strDomainName);            
            if(!displayElement){
                // try domain suggestions control
                displayElement = document.getElementById("addedStatSuggest" + strDomainName);
            }
            if(displayElement) { displayElement.innerHTML = ""; }

        }    
    }
}

// extracts an XML tag from a string
function xmlTagValue(strXML, strTag)
{
	var strStartTag;
	var strEndTag;
	var intStartPos;
	var intEndPos;
	strStartTag = '<' + strTag + '>';
	strEndTag = '</' + strTag + '>'	;
	intStartPos = strXML.indexOf(strStartTag);
	intEndPos = strXML.indexOf(strEndTag);
	if ( intStartPos >= 0 && intEndPos > 0 )
	{
		return strXML.substr( (intStartPos + strStartTag.length),intEndPos-(intStartPos + strStartTag.length) );
	}
	else
	{
		return ""
	}
}

function DisplayErrorMessage(strMessage)
{
    var obj = document.getElementById('divError');
    if(obj){
        if (strMessage != ""){
            obj.style.display = "block";        
        }
        else{
            obj.style.display = "none";
        }
        obj.innerHTML = strMessage;
    } 
}

function selectAll() {
	$('input:checkbox:visible.TLDcheckbox').attr('checked', $('#chkAll').attr('checked'));
}

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();

