var Share = {};

// Properties 
Share.responsysId = "";
Share.trackingOpen = ""
Share.trackingSuccess = "";

// dom els
Share.elYourName = null;
Share.elYourAddress = null;
Share.elFriendName = null;
Share.elFriendAddress = null;

// html
Share.htmlStaf = "";
Share.htmlBlog = "";

// Methods
Share.showStaf = function(opts)
{
	// grab DOM elements, trigger overlay, set click event
	// onclick construct responsys string
	
    // Set Defaults
    if(typeof opts == "undefined")
       opts = {};
       
    // save opts local
    var width = opts.width || 470;    
    var height = opts.height || 329;
    var viewID = opts.viewID || ""; 
	
    // save opts global
    Share.trackingOpen = opts.trackingOpen || "";    
    Share.trackingSuccess = opts.trackingSuccess || "";    
    Share.responsysId = opts.responsysId || "";    
    Share.responsysOptions = opts.responsysOptions || "";      
    Share.viewID = opts.viewID || "";      
	
    Modal.show("stafOut", width, height);
    
    // get window dom els and assign events
    this.elYourName = getElementById("stafYourName");
    this.elYourAddress = getElementById("stafYourAddress");
    this.elFriendName = getElementById("stafFriendName");
    this.elFriendAddress = getElementById("stafFriendAddress");
    
	//Staf form tracking
    _hbPageView('Share', Share.trackingOpen);
	
    // set event for send button
    getElementById("stafFormSendButton").onclick = function()
    {            
       var isValid = Share.validateStafForm();
       if(isValid)
       {
            var responsysRequired = '&yourname=' + escape(Share.elYourName.value)
                    + '&youremail=' + escape(Share.elYourAddress.value)
                    + '&friendname=' + escape(Share.elFriendName.value)
                    + '&EMAIL_ADDRESS_=' + escape(Share.elFriendAddress.value)
                    + '&msgID=' + Math.ceil(Math.random()*1000000000)
					+ '&mylocale=' + MY11.locale
                    + '&viewID=' + Share.viewID.toLowerCase();
            var urlResponsys = 'https://harley-davidson.rsys2.net/pub/rf?_ri_=X0Gzc2X%3DUQpglLjHJlTQIUQinOsQinOgQr7DQQzgQvQyXkVwjpnpgHlpgneHmgJoXX0Gzc2X%3DUQpglLjHJlTQIUQinOsQinOgQr7CQQGQvQyOf' + responsysRequired;
            
            getElementById("stafIframe").src = urlResponsys;
            getElementById("stafSubmit").style.display = "none";
            getElementById("stafSuccess").style.display = "block";
			
			//Staf confirm tracking			
			//trackString = '/Products/Motorcycles/2011s/Share/STAF/Confirm/'+ MY11.familyCode + "/" + Share.viewID;			
			_hbPageView('Share', Share.trackingSuccess);
			
        
       }
       return false;
    }
    
    // set event for close button
    getElementById("stafCloseTop").onclick = function()
    {
		Share.resetStaf();
		Modal.hide();
    }
    getElementById("stafCloseBottom").onclick = function()
    {
		Share.resetStaf();
        Modal.hide();
    }
    
}

Share.resetStaf = function(opts)
{
    this.elYourName.value = "";
    this.elYourAddress.value = "";
    this.elFriendName.value = "";
    this.elFriendAddress.value = "";    
	getElementById("stafSubmit").style.display = "block";
	getElementById("stafSuccess").style.display = "none";	
}

// reset error class name
// add class names for required fields, valid emails
Share.validateStafForm = function()
{
    var isValidRequired = true;
    var isValidEmail = true;
    
    // reset prompts
    this.elYourName.className = "";
    this.elYourAddress.className = "";
    this.elFriendName.className = "";
    this.elFriendAddress.className = "";    

    // add error class on empty fields
    if(this.elYourName.value == "") {
        isValidRequired = false;
        this.elYourName.className = "error";
    }
    if(this.elYourAddress.value == "") {
        isValidRequired = false;
        this.elYourAddress.className = "error";
    }
    if(this.elFriendName.value == ""){
        isValidRequired = false;
        this.elFriendName.className = "error";
    } 
    if(this.elFriendAddress.value == ""){
        isValidRequired = false;
        this.elFriendAddress.className = "error";
    }
    
    // add error class on email
	var regExEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;    
    if(!regExEmail.test(this.elYourAddress.value)){
        isValidEmail = false;
        this.elYourAddress.className = "error";        
    }
    if(!regExEmail.test(this.elFriendAddress.value)){
        isValidEmail = false;
        this.elFriendAddress.className = "error";        
    }        

    if(isValidRequired && isValidEmail){
        return true;
    }
    else
    {
        var txtRequired = (!isValidRequired) ? "All fields are required." : "";
        var txtEmail = (!isValidEmail) ? " Please enter valid email addresses." : "";
        getElementById("stafErrors").innerHTML = "<span>" + txtRequired + txtEmail + "<span>";
        return false;
    }
}

// show blog html
Share.showBlog = function(opts)
{
    // Set Defaults
    if(typeof opts == "undefined")
       opts = {};
       
    // save opts local
    var width = opts.width || 470;    
    var height = opts.height || 290;
    var image = opts.image || "";
    var anchorText = opts.anchorText || "";
    var headline = opts.headline || "";
    var loc = location.href;

    // save opts global
    Share.trackingOpen = opts.trackingOpen || "";    
    
    Modal.show("blogOut", width, height);
    
    // customize blog code
    var html = '<a href="' + loc + '" target="_blank">\
<img id="blogCodeImage" src="' + image + '" align="left" hspace="8" border="0"/></a>\
' + headline + '<br/>Check it out at <a href="' + loc + '" target="_blank">' + anchorText + '</a>';	
    getElementById("blogCode").value = html;


    getElementById("blogCloseTop").onclick = function(){
        Modal.hide();
    }
    getElementById("blogCloseBottom").onclick = function(){
        Modal.hide();
    }    
    
    // do tracking
	_hbPageView('Share', Share.trackingOpen);
		if(typeof mmConversion=='function') {
			mmConversion(124567);
		};
}

// open link to myspace
Share.showMyspace = function(opts)
{
    // Set Defaults
    if(typeof opts == "undefined") opts = {};
    Share.trackingOpen = opts.trackingOpen || "";    

    var url = "http://www.myspace.com/Modules/PostTo/Pages/?u=" + encodeURIComponent(document.location.toString()); 
    window.open(url, "share", "width=1024,height=768,scrollbars=yes,resizable=yes,toolbar=no,location=no,menubar=no,directories=no,status=no"); 

    // do tracking
	_hbPageView('Share', Share.trackingOpen);	
		if(typeof mmConversion=='function') {
			mmConversion(124567);
		};	
}

// open link to facebook
Share.showFacebook = function(opts)
{
    // Set Defaults
    if(typeof opts == "undefined") opts = {};
    Share.trackingOpen = opts.trackingOpen || "";    

    var loc = location.href.split("#")[0];
    var description = opts.description || "";
    var urlOpen = 'http://www.facebook.com/sharer.php?u=' + loc + '&t=' + escape(description);
    window.open(urlOpen, "share", "toolbar=0,status=0,width=626,height=436"); 

    // do tracking
	_hbPageView('Share', Share.trackingOpen);
		if(typeof mmConversion=='function') {
			mmConversion(124567);
		};
};





// kick off
window.onload = function()
{    
    Modal.init(["blogOut", "stafOut"]);
}

// utils
function getElementById(id){ return document.getElementById(id) || null; }
function setOpacity(el, amt){ var el = (typeof el == "object") ? el : document.getElementById(id); el.style.filter = "alpha(opacity=" + amt*100 + ")"; el.style.opacity = amt; }

// util for modal winodw
var Modal = {};
Modal.init = function(elsModal)
{
	// remove modal html and place hold in object
    for(i in elsModal)
    {
		if(!getElementById(elsModal[i]))
			return false;
        var el = getElementById(elsModal[i]);
        this[elsModal[i]] = el.innerHTML;
        el.parentNode.removeChild(el);
    }    
    // add overlay
    var el = document.createElement("div");
    el.id = "modalOverlay";
    el.style.position = "absolute";
    el.style.display = "none";
    el.style.backgroundColor = "#000";
    el.style.top = "0";
    el.style.bottom = "0";
    el.style.left = "0";
    el.style.right = "0";
    el.style.zIndex = "998";
    setOpacity(el, .3);
    document.body.appendChild(el);
    this.elOverlay = el;
}

Modal.show = function(el, width, height)
{
    // add html to dom, held on Modal object
    if(!getElementById(el)){
        var elNew = document.createElement("div");
        elNew.id = el
        elNew.innerHTML = this[el];
        document.body.appendChild(elNew);
    }
    // center window
    var el = getElementById(el);
    el.style.display = "block";
    el.style.position = "absolute";
    el.style.zIndex = "999";
    el.style.width = width + "px";
    el.style.height = height + "px"; 
    el.style.top = "50%";
    el.style.left = "50%";
    el.style.margin = "-" + ((height/2)*1.25) + "px" + " auto auto " + "-" + (width/2) + "px";
    this.elWindow = el;
    
    // show modal
    getElementById("modalOverlay").style.display = "block";
}
Modal.hide = function()
{
    this.elOverlay.style.display = "none";
    this.elWindow.style.display = "none";    
}

