﻿function updateBox(e) {
    o = {};
    o.left = Math.min(e.pageX,e.data.x);
    o.top = Math.min(e.pageY,e.data.y);
    o.width = Math.abs(e.data.x - e.pageX);
    o.height = Math.abs(e.data.y - e.pageY);
    return o;
} 

$(document).ready(function() {
    init();
        
        
    $("a[disabled='disabled']").each(function() {if(this) $(this).addClass('disabled')});   

    $('.tooltipper').tooltip({
        bodyHandler: function() {
            var tip = $('#' + $(this).parent().attr('id').replace(/trigger/, 'tooltip'));
            return tip.html();
        },
        delay:0,
        showURL: false,
        track:true,
        top: -30, 
        left: -320 
    });
        
        
//    $("div.greeting a.register").click(function(){
//        $("iframe.register").attr("src", "registration/step0.aspx");
//        $('#hiddenModalContentRegistration').removeClass().addClass("reg0");
//        $('#hiddenModalContentRegistration').modal({ position: [100,], overlayCss: {backgroundColor: '#000'} });
//        
//        return false;
//    });
    
});




function CreateBookmarkLink() {
    
    title = document.title;
    url = document.location;
    

	if (window.sidebar) { // Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	} else if( window.external ) { // IE Favorite
		window.external.AddFavorite( url, title); }
	else if(window.opera && window.print) { // Opera Hotlist
		return true; }
 }
 

function setCookie(name, value, expires, path, domain, secure) {
	var curCookie = name + "=" + escape(value) +
	((expires) ? "; expires=" + expires.toGMTString() : "") +
	((path) ? "; path=" + path : "") +
	((domain) ? "; domain=" + domain : "") +
	((secure) ? "; secure" : "");
	document.cookie = curCookie;
}
function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else
		begin += 2;
	var end = document.cookie.indexOf(";", begin);
	if (end == -1)
		end = dc.length;
	return unescape(dc.substring(begin + prefix.length, end));
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

function GetTodayDate()
{
    var now = new Date();
    var retVal = "";
    var date = "";
    var dayName = new Array ("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
    var monName = new Array ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
    
    if(now.getDate() < 10)
        date = " " + now.getDate();
    else
        date = now.getDate();
    
    retVal = monName[now.getMonth()] + " " + date + ", " + now.getFullYear() + "<br />" + dayName[now.getDay()]; 
    return retVal;
}

function QueryString(key)
{

    var value = null;
    for (var i=0;i<QueryString.keys.length;i++)
    {
	    if (QueryString.keys[i]==key)
	    {
		    value = QueryString.values[i];
		    break;
	    }
    }
    return value;
}

function querystring_parse()
{
    var query = window.location.search.substring(1);
    var pairs = query.split("&");
 
    for (var i=0;i<pairs.length;i++)
    {
	    var pos = pairs[i].indexOf('=');
	    if (pos >= 0)
	    {
		    var argname = pairs[i].substring(0,pos);
		    var value = pairs[i].substring(pos+1);
		    QueryString.keys[QueryString.keys.length] = argname;
		    QueryString.values[QueryString.values.length] = value;
	    }
    }
}


function openAddPet() {
    var ap = document.getElementById('AddPet');
    if (ap) {
        ap.style.display = 'block';
    }
}

function closeAddPet() {
    var ap = document.getElementById('AddPet');
    if (ap) {
        ap.style.display = 'none';
    }
}

function SaveToFavs()
{
   var id = document.getElementById('ctl00_ContentLeftColumn_articleId').value;
   var test = AjaxMethods.SaveFavorite(id, SaveFavorite_callback);
}
        
function SaveFavorite_callback(response) {
    var message = "<div class='content'>" + response.value + "</div>";
    HpuModalDialog.ShowMessage(message);
}

function validatePet(name, bday, species, breed)
{
    var err = "Please fix the following errors:\n";
    var errCount = 0;
    
    if(name.length == 0) {
        err += "Enter pet's name\n";
        errCount++;
    }
    if(bday.length == 0) {
        err += "Enter pet's birthday\n";
        errCount++;
    }
    if(species.length == 0) {
        err += "Enter pet's species\n";
        errCount++;
    }
    if(breed.length == 0){
        err += "Enter pet's breed\n";
        errCount++;
    }
    
    if(errCount == 0)
        return "";
    else
        return err;
}

function SavePet()
{
    var name = document.getElementById('AddPetName').value;
    var bday = document.getElementById('AddPetBirthday').value;
    var species = document.getElementById('ctl00_ContentLeftColumn_uiSpecies');
    var breed = null;
    
    if(document.getElementById('ctl00_ContentLeftColumn_uiBreedListDogs').style.display == 'block')
        breed = document.getElementById('ctl00_ContentLeftColumn_uiBreedListDogs');
    
    else
        breed = document.getElementById('ctl00_ContentLeftColumn_uiBreedListCats');
    
    var isValid = validatePet(name, bday, getText(species), getText(breed));
    if(isValid.length == 0)
        account.SavePet(name, bday, getText(species), getText(breed),SavePet_callback);
    else
        alert(isValid);
    
}

function DeletePet()
{
   var pet = document.getElementById('ctl00_ContentLeftColumn_uiPetList');
   var name = "";
   var id = "";
        
   if(pet == null)
       id = document.getElementById('').value;
   else
   {
       name = pet[pet.selectedIndex].innerText;
       id = getOptions(pet);
   }    
   
   if(confirm('Are you sure you want to delete ' + name + '?'))
   {
       if(id.length > 0)
           account.DeletePet(id, SavePet_callback)
   } 
}

function LoadBreeds()
{
    var pet = document.getElementById('ctl00_ContentLeftColumn_uiSpecies');
    var id = getOptions(pet);
    
    if(id == '2007102023341127001')
    {
        document.getElementById('ctl00_ContentLeftColumn_uiBreedListDogs').style.display = 'block';
        document.getElementById('ctl00_ContentLeftColumn_uiBreedListCats').style.display = 'none';
    }
    else
    {
        document.getElementById('ctl00_ContentLeftColumn_uiBreedListCats').style.display = 'block';
        document.getElementById('ctl00_ContentLeftColumn_uiBreedListDogs').style.display = 'none';
    }
}

function GetBreed()
{
   var pet = document.getElementById('ctl00_ContentLeftColumn_uiPetList');
   account.GetBreed(getOptions(pet), GetBreed_callback);
}

function getOptions(sel){
  var opts='';
  for(i=0;i<sel.length;i++){
    if(sel.options[i].selected){
      if(opts == ''){opts=sel.options[i].value;}
      else{ opts+=', ' + sel.options[i].value;}
    }
  }
  return opts;
}


function getText(sel){
  var opts='';
  for(i=0;i<sel.length;i++){
    if(sel.options[i].selected){
      if(opts == ''){opts=sel.options[i].innerText;}
      else{ opts+=', ' + sel.options[i].innerText;}
    }
  }
  return opts;
}

function initBreeds()
{
    var pet = document.getElementById('ctl00_ContentLeftColumn_uiSpecies');
    
    if(pet != null)
    {
        var id = getOptions(pet);
        
        if(id == '2007102023341127001')
        {
            document.getElementById('ctl00_ContentLeftColumn_uiBreedListDogs').style.display = 'block';
            document.getElementById('ctl00_ContentLeftColumn_uiBreedListCats').style.display = 'none';
        }
        else
        {
            document.getElementById('ctl00_ContentLeftColumn_uiBreedListDogs').style.display = 'none';
            document.getElementById('ctl00_ContentLeftColumn_uiBreedListCats').style.display = 'block';
        }
    }
}

function SetAccountLinks()
{
    var pet = document.getElementById('ctl00_ContentLeftColumn_uiPetList');
    
    if(pet != null)
    {
        document.getElementById('ctl00_ContentLeftColumn_uiLinkUpload').href = 'editpet.aspx?pid=' + getOptions(pet);
        document.getElementById('ctl00_ContentLeftColumn_uiOpenPet').href = 'editpet.aspx?pid=' + getOptions(pet);
    }
}

function GetBreed_callback(response)
{
    var txt = response.value.split('|');
    
    if(txt.length > 1)
    {
        document.getElementById('ctl00_ContentLeftColumn_uiPetImage').src = "/images/petphotos/" + txt[1];
        document.getElementById('ctl00_ContentLeftColumn_uiPetUpload').src = 'img/spacer.gif';
        //alert('test');
    }
    else
    {
        document.getElementById('ctl00_ContentLeftColumn_uiPetImage').src = '/img/spacer.gif';
        document.getElementById('ctl00_ContentLeftColumn_uiPetUpload').src = '/images/button_upload.gif';
    }
    SetAccountLinks();
    document.getElementById('ctl00_ContentLeftColumn_uiBreed').innerHTML = txt[0];
    Hilite.hiliteSpecific('ctl00_ContentLeftColumn_uiBreed');
}

function GetBreedList_callback(response)
{
    var r = response.value;
    alert('GetBreedList: ' + r[0].Label);
}

function SavePet_callback(response)
{
    closeAddPet();
    window.location.href="account.aspx";
}

function SubmitSearch(objid) {
    
    var so = document.getElementById(objid);

    if (so) {
        document.location = '/search.aspx?zoom_query=' + so.value;
    }

}

function toggleLayer( whichLayer )
{
  var elem, vis;
  if( document.getElementById ) // this is the way the standards work
    elem = document.getElementById( whichLayer );
  else if( document.all ) // this is the way old msie versions work
      elem = document.all[whichLayer];
  else if( document.layers ) // this is the way nn4 works
    elem = document.layers[whichLayer];
  
  vis = elem.style;
  // if the style.display value is blank we try to figure it out here
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}


function init()
{
    //fixFeatures();

    
    var d = document.getElementById('DateContainer');
    if(d != null) { d.innerHTML = GetTodayDate(); }
    SetAccountLinks();
    initBreeds();
    
    if(!turn_off_highlight)
    {
        Hilite.hiliteSpecific('sitecontentcontainer');        
    }
    
    addBookmarkObj.addImageLink('','/images/button_bookmark.gif');
    
}

function fixFeatures() {
    var l = document.getElementById('LeftHomeFeature');
    var r = document.getElementById('RightHomeFeature');
    // var f = document.getElementById('Advertisement_Bottom');
    var dif = 0;
    
    if(l && r) {
        if(l.clientHeight > r.clientHeight) {
            r.style.height = l.clientHeight + 'px';
            dif = l.clientHeight - 285;
        } else {
            l.style.height = r.clientHeight + 'px';
            dif = r.clientHeight - 285;
        }
        
        if(f != null)
        {
            dif = dif + 25;
            f.style.padding = dif + 'px 0px 0px 0px';
        }
    }
}

/**
*
*  URL encode / decode
*  http://www.webtoolkit.info/
*
**/

var Url = {

    // public method for url encoding
    encode: function (string) {
        return escape(this._utf8_encode(string));
    },

    // public method for url decoding
    decode: function (string) {
        return this._utf8_decode(unescape(string));
    },

    // private method for UTF-8 encoding
    _utf8_encode: function (string) {
        string = string.replace(/\r\n/g, "\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if ((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // private method for UTF-8 decoding
    _utf8_decode: function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while (i < utftext.length) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

}
function getURLValue(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return results[1];
}
