﻿function GetDomainAvailability(strdomainName) 
{      
    PageMethods.DomainAvailable(strdomainName, onSucceeded, OnFailed);
}

function AddToCart(strdomainName, strSessionId)
{   
    var hdElement;
    hdElement = $get("basketStat" + strdomainName);
    if (hdElement.value == "add") 
    {    
        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
        {
            // 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 = $get("imgRes" + strDomainName);
    if (imgElement){
        imgElement.style.display = "block";
    }
    
    // make sure the separator is visible
    separator = $get("spanSepar" + strDomainName);
    if (separator)
    {
        //alert("objectNull? (" + separator + ") - separator style: (" + separator.style.display + ")");
        separator.style.display = "inline";
    }    
                
    chkElement = $get("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 = $get("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 = $get("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 = $get("btnSelected" + strDomainName);
    if (btnSelected)
    {
        separator = $get("spanSepar" + strDomainName);
        if (separator){ separator.style.display = "none"; }
        btnSelected.style.display = "none";
    } else {
        separator = $get("spanSepar" + strDomainName);
        if (separator)
            separator.style.display = "inline";
    }
    
    // show WHOIS link
    displayWhois = $get("aWHOIS" + strDomainName);

    if (document.URL.indexOf("?")>0) {              // if we have URL parameters        
        re = new RegExp(".+webnames.ca/.+","gi");
        paramType = "?";
    } else {                                        // if we don't have URL parameters passed.        
        re = new RegExp(".+webnames.ca\/.+", "gi");
        paramType = "?";
    }
    // prepare WHOIS URL
    protoRe = new RegExp("http.+\/\/[^.]+","gi");   // matches "http://www." or "https://www." and other hostnames.
    protocol = document.URL.match(protoRe);
    whoIsURL = document.URL.replace(re,".webnames.ca/whois.aspx");
    whoIsURL = protocol + whoIsURL + paramType + "domain=" + strDomainName;    

    if (displayWhois){
        displayWhois.innerHTML = "Whois"
        displayWhois.setAttribute("href", whoIsURL);
        displayWhois.setAttribute("target", '_blank');
    }
    
    // show the separator | betweek the links above    
    spanSepar = $get("spanSepar" + strDomainName);
    if (spanSepar){
        spanSepar.innerHTML = "&nbsp;|&nbsp;"
    }
}

function UpdateSearchWhenInvalid(strDomainName, strDomainStatus)
{
    var aWhois;
    var displayWhois;
    var displayElement;
    var whoIsURL; 
    var spanSepar;
        
    btnSelected = $get("btnSelected" + strDomainName);
    if (btnSelected)
    {
        separator = $get("spanSepar" + strDomainName);
        if (separator){ separator.style.display = "none"; }
        btnSelected.style.display = "none";
    } else {
        separator = $get("spanSepar" + strDomainName);
        if (separator)
            separator.style.display = "inline";
    }    
    
    ToggleAvailTags(strDomainName, strDomainStatus);
}


function UpdateSearchWhenUnKnown(strDomainName, strDomainStatus)
{
    ToggleAvailTags(strDomainName, strDomainStatus);
}

// toggle avaliabilty status tags
function ToggleAvailTags(strDomainName, strDomainStatus)
{
    var imgURL;    
    var obj1 = $get("imgAvail" + strDomainName);
    var obj2 = $get("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
        {
          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 strPrebookExt;
    var strErrorMessage;
    
    strPrebookExt = xmlTagValue(result, "PrebookExtension")
    if (result.toUpperCase().indexOf("NOT_OK") >= 0){
        
        strErrorMessage = "It is not possible yet to mix in the shopping cart " + strPrebookExt.toUpperCase() + " domains with other extensions.<br/>";
        DisplayErrorMessage(strErrorMessage);
        return;
    }
    else{
        DisplayErrorMessage("");
    }
    
    strDomainName = xmlTagValue(result, "DomainName")
    
    hdElement = $get("basketStat" + strDomainName);
    if ( hdElement == null ) {
        // try domain suggestions control
        hdElement = $get("suggestBasketStat" + strDomainName);
    }
    if(hdElement){
        hdElement.setAttribute("value", 'added'); 
    }
        
    // hide AddToCart button 
    imgElement = $get("imgRes" + strDomainName);
    if (imgElement ==null) {
        // try domain suggestions control
        imgElement = $get("imgSuggest" + strDomainName);
    }
    if(imgElement){
        imgElement.style.display = "none";
    }
    
    // display 'Added to Cart' message instead of the image button
    displayElement = $get("addedStatus" + strDomainName);
    if (displayElement==null) {
        // try domain suggestions control
        displayElement = $get("addedStatSuggest" + strDomainName);
    }
    if(displayElement){
        displayElement.innerHTML = 'Added to Cart';
    }
   
    // now let's refresh the cart 
    __doPostBack('spanCart', '');         
}

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)
{   
    var displayElement;
    var hdElement;
    var imgElement;
    hdElement = $get("basketStat" + strDomainName);
    if(!hdElement){
        // try domain suggestions control
        hdElement = $get("suggestBasketStat" + strDomainName);
    }
    
    if (hdElement){
        if (hdElement.value == "added"){
            hdElement.setAttribute( "value", 'add' ); 
            imgElement = $get("imgRes" + strDomainName);
            if(!imgElement){
                // try domain suggestions control
                imgElement = $get("imgSuggest" + strDomainName);
            }
            imgElement.style.display = "inline";
            
            displayElement = $get("addedStatus" + strDomainName);            
            if(!displayElement){
                // try domain suggestions control
                displayElement = $get("addedStatSuggest" + strDomainName);
            }            
            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 = $get('divError');
    if(obj){
        if (strMessage != ""){
            obj.style.display = "block";        
        }
        else{
            obj.style.display = "none";
        }
        obj.innerHTML = strMessage;
    } 
}

function selectAll()
{
    var arrExtensions = ['ca', 'us', 'biz', 'info', 'com', 'net', 'org', 'cn', 'mobi', 'asia', 'tel'];
    if ($get('all').checked == true)
	{
	    for (var i=0; i < arrExtensions.length; ++i)
        {
            var chkExtension = $get(arrExtensions[i]);
            if (chkExtension) chkExtension.checked = true;
        }
    }
    else
    {
        for (var i = 0; i < arrExtensions.length; ++i)
        {
            var chkExtension = $get(arrExtensions[i]);
            if (chkExtension) chkExtension.checked = false;
        }
    }
}



// precache image files
Image1= new Image(150,20)
Image1.src = "~/images/wn4/icon_wait.gif"
Image2= new Image(150,20)
Image2.src = "~/images/wn4/button_addcart.gif"
Image3= new Image(150,20)
Image3.src = "~/images/wn4/icon_cart_delete.gif"
Image4= new Image(150,20)
Image4.src = "~/images/wn4/icon_available.gif"
Image5= new Image(150,20)
Image5.src = "~/images/wn4/icon_unavailable.gif"
Image6= new Image(150,20)
Image6.src = "~/images/wn4/button_makeoffer.gif"

if (typeof(Sys) !== 'undefined') Sys.Application.notifyScriptLoaded();
