﻿function trackJSCalls(descr)
{
    //var uri = window.location.pathname.substr(0, window.location.pathname.lastIndexOf('/')+1) + descr + "/" + window.location.pathname.substr(window.location.pathname.lastIndexOf('/')+1);
    //dcsMultiTrack('DCS.dcsuri', uri, 'WT.ti', descr, 'WT.dl','6');
    dcsMultiTrack('DCS.dcsuri', '/windowsmobile/en-us/sharewidget/'+descr, 'WT.ti', 'Share Widget - '+descr, 'WT.dl', '1', 'wtEvtSrc', 'www.microsoft.com/windowsmobile/en-us/sharewidget.php' );
}

//function execLink(url, descr)
//{
//    trackJSCalls(descr);
//    var newurl = url.replace(/@@@@/g, "'");
//    eval(newurl);
//}

//------- After loading -------//
var shareOpened;
var showShareExpanded = "false";

function loadStylesShare() {
    
    //Share Collapsed
    if (document.getElementById("share").className == "shareCollapsed") {
        document.getElementById("div_btnCollapse_share").className = "btnCollapsedShare";
        document.getElementById("iconsHeader").style.display = "block";
        shareOpened = false;
    }
    //Share Expanded
    else {
        if (document.getElementById("share").className == "shareExpanded") {            
            document.getElementById("div_btnCollapse_share").className = "btnExpandedShare";            
            document.getElementById("iconsHeader").style.display = "none";
            shareOpened = true;
        }
    }
}

//------- Header over out -------//
function headerOverShare() {
    if (shareOpened) {
        document.getElementById("div_btnCollapse_share").className = "btnExpandedShare_hover";
    }
    else {
        document.getElementById("div_btnCollapse_share").className = "btnCollapsedShare_hover";
    }
}

function headerOutShare() {
    if (shareOpened) {
        document.getElementById("div_btnCollapse_share").className = "btnExpandedShare";
    }
    else {
        document.getElementById("div_btnCollapse_share").className = "btnCollapsedShare";
    } 
}

//------- Open and Close Body -------//
var classVerifiedShare = false;
var shareClass;

function openCloseShare() {
       
   //If class has been verified for first time
    if (classVerifiedShare == false) {
        shareClass = document.getElementById("share").className;

        if (shareClass == "shareCollapsed") {
            shareClass = "shareExpanded";
            shareOpened = false;
        }
        else {
            shareOpened = true;
        }
        classVerifiedShare = true;
    }

    //If share is collapsed
    if (shareOpened == false) {
        trackJSCalls("expand");
        document.getElementById("share").className = shareClass;        
        document.getElementById("div_btnCollapse_share").className = "btnExpandedShare";
        document.getElementById("iconsHeader").style.display = "none";
        
        shareOpened = true;
    }
    //If share is opened
    else {        
        trackJSCalls("collapse");
        document.getElementById("share").className = "shareCollapsed";        
        document.getElementById("div_btnCollapse_share").className = "btnCollapsedShare";
        document.getElementById("iconsHeader").style.display = "block";       

        shareOpened = false;
    }
}


//*********************** smoothe collapsable panel object constructor ***************************
function Collapser(panel, trigger, minWidth, minHeight, maxWidth, maxHeight, duration, interval, expanded) {
    this.m_Panel = panel;
    this.m_Trigger = trigger;
    this.m_MinWidth = minWidth;
    this.m_MinHeight = minHeight;
    this.m_MaxWidth = maxWidth;
    this.m_MaxHeight = maxHeight;
    this.m_Duration = duration;
    this.m_Interval = interval;
    this.m_Expanded = expanded;

    this.m_Direction = 1;
    this.m_ElapsedTime = 0;

    this.m_ChangeWidth = 0;
    this.m_ChangeHeight = 0;

    this.m_StartWidth = 0;
    this.m_StartHeight = 0;

    if (expanded) {
        this.SetDimensions(maxWidth, maxHeight);
        this.AddHandler(this.m_Trigger, 'click', this.CreateDelegate(this, this.Collapse));
    }
    else {
        this.SetDimensions(minWidth, minHeight);
        this.AddHandler(this.m_Trigger, 'click', this.CreateDelegate(this, this.Expand));
    }
}


Collapser.prototype.Expand = function() {
    this.RemoveHandler(this.m_Trigger, 'click');

    this.m_ElapsedTime = 0;
    this.m_ChangeWidth = this.m_MinWidth - this.m_MaxWidth;
    this.m_ChangeHeight = this.m_MinHeight - this.m_MaxHeight;
    this.m_StartWidth = this.m_MinWidth;
    this.m_StartHeight = this.m_MinHeight;

    this.Animate();
}

Collapser.prototype.Collapse = function() {
    this.RemoveHandler(this.m_Trigger, 'click');

    this.m_ElapsedTime = 0;
    this.m_ChangeWidth = this.m_MaxWidth - this.m_MinWidth;
    this.m_ChangeHeight = this.m_Panel.clientHeight - this.m_MinHeight;
    this.m_StartWidth = this.m_MaxWidth;
    this.m_StartHeight = this.m_Panel.clientHeight;

    this.m_Panel.style.minHeight = "";

    this.Animate();
}

Collapser.prototype.Animate = function() {
    var percentChange = this.m_ElapsedTime / this.m_Duration;

    this.m_Panel.style.width = (this.m_StartWidth - (percentChange * this.m_ChangeWidth)) + 'px';
    this.m_Panel.style.height = (this.m_StartHeight - (percentChange * this.m_ChangeHeight)) + 'px';

    this.m_ElapsedTime += this.m_Interval;

    if (this.m_ElapsedTime <= this.m_Duration) {
        setTimeout(this.CreateDelegate(this, this.Animate));
    }
    else {
        this.m_Expanded = this.m_Expanded ? false : true;
        if (this.m_Expanded) {
            this.m_Panel.style.minHeight = this.m_Panel.style.height;
            this.m_Panel.style.height = "";
            this.AddHandler(this.m_Trigger, 'click', this.CreateDelegate(this, this.Collapse));
        }
        else {
            this.AddHandler(this.m_Trigger, 'click', this.CreateDelegate(this, this.Expand));
        }
    }
}

Collapser.prototype.SetDimensions = function(width, height) {    
    this.m_Panel.style.height = height + 'px';
    this.m_Panel.style.width = width + 'px';
}


//*********************** Event Handler Creation ***************************
Collapser.prototype.AddHandler = function(object, eventName, handler) {
    eval("object." + eventName + object.id + " = handler");
    if (object.addEventListener) { object.addEventListener(eventName, handler, false); }
    else { object.attachEvent("on" + eventName, handler); }
}

Collapser.prototype.RemoveHandler = function(object, eventName) {
    var fn = eval("object." + eventName + object.id);
    if (fn) {
        if (object.removeEventListener) { object.removeEventListener(eventName, fn, false); }
        else { object.detachEvent("on" + eventName, fn); }
    }
}

Collapser.prototype.CreateDelegate = function(object, method) {
    return (function() { return method.apply(object, arguments); })
}
