var lexyVersion = "4.20.1";
var lexyBaseUrl = "http://www.lexy.com/";
var red5BaseUrl = "rtmp://uploads.lexy.com:1935";
var staticBaseUrl = "http://www.lexy.com/";
var editFieldsDisabled = 0;
// var useS3Versioning = 1;
var useS3Versioning = 0;


var linkBar;
var linkBarNoHide = 0;

// upload mp3 file from the web
function doWebUpload(draft) {
    $("postButton").disable();
    $("draftButton").disable();
    $("waitingText").show();
    
    if (draft) {
        $("postDraft").setValue(1);
    }
    
    $("episodeUploadForm").submit();
}

var linkBarCurrent;
var hideTimeout;

// do an ajax request, specifying json
function doAjax(url, cb, params, req) {
	url = lexyBaseUrl + url;
	
	if (! req) req = {};
	if (! req.requestHeaders) req.requestHeaders = {};
	req.requestHeaders['Accept'] = 'application/json' ;
	req.evalJSON = 'force';
	req.onSuccess = cb;
	req.parameters = params;
	
	return new Ajax.Request(url, req);
}

// do fake REST using x-tunneled-method for the REST method
function doRest(url, cb, params, mode) {
	url = "api/rest/" + url;
	
	var req = {};
	
	if (! mode) mode = "GET";
	req.method = mode;
	req.requestHeaders = {
		'x-tunneled-method': mode
	};
	
	doAjax(url, cb, params, req);
}

// resend phone verification code from the edit caller page
function editCallerSendPhoneVerification() {
    var url = 'api/smsverify/send_verification_code';
    
    doAjax(url, editCallerSendPhoneVerificationCallback, {}, {
		onException: function (req, exception) {
			alert(exception);
		}
	});
}

function editCallerSendPhoneVerificationCallback (transport) {
    var res = transport.responseJSON;
	if (! res) return;
    
    $('verify_code_status').innerHTML = "Verification code sent";
    window.setTimeout(function () { $("verify_code_status").innerHTML = ""; }, 10000);
}

function sendSMSVerificationCodeCallback(transport) {
    var res = transport.responseJSON;
	if (! res) return;
	
	$("verify_status").innerHTML = "Registration code sent!";
	window.setTimeout(function () { $("verify_status").innerHTML = ""; }, 10000);
}

// terms and conditions popup
function openTC() {
	var wnd = window.open('http://www.lexy.com/partner/contest_tnc','terms','height=500,width=500,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=no,status=yes');
}

function showHideEditSection(section) {
    var box = $(section);
    if (! box) return;
    
    if (box.hasClassName('collapsed')) {
        box.removeClassName('collapsed');
    } else {
        box.addClassName('collapsed');
    }
}

function editFeedItemName(feed_item_id) {
	var editField = $("history_feed_item_" + feed_item_id);
	if (! editField) return;

	var label = $("history_feed_item_label_" + feed_item_id);
	if (! label) return;
	
	editField.style.display = "inline";
	label.style.display = "none";
	
	editField.enable();
	editField.activate();
}

function editFeedItemNameKeyDown(event, feed_item_id) {
	if (checkEnter(event))
		saveFeedItemName(feed_item_id);
		
	return false;
}

function saveFeedItemName(feed_item_id) {
	var editField = $("history_feed_item_" + feed_item_id);
	// if field is already disabled we dont care
	if (! editField || editField.disabled) return;
	
	// update feed item title
	var feed_item_title = $("episode_title_" + feed_item_id);
	if (feed_item_title)
		feed_item_title.update($F(editField).escapeHTML());
	// update Shadowbox
	var valueLabel = document.getElementById("sb-title-inner");
	if (valueLabel)
		valueLabel.update("Lexypost " + $F(editField).escapeHTML());
			
	var unpublished_field = $("history_feed_item_unpublished_" + feed_item_id);
	var is_unpublished;
	if (unpublished_field) {
		is_unpublished = unpublished_field.value;
		unpublished_field.value = 0;
	}
	
	var publish_twitter_field = $("history_feed_item_publish_twitter_" + feed_item_id);
	var publish_twitter = 0;
	if (is_unpublished && publish_twitter_field) {
		publish_twitter = publish_twitter_field.checked ? 1 : 0;
	}

	var publish_facebook_field = $("history_feed_item_publish_facebook_" + feed_item_id);
	var publish_facebook = 0;
	if (is_unpublished && publish_facebook_field) {
		publish_facebook = publish_facebook_field.checked ? 1 : 0;
	}

	var is_draft_field = $("history_feed_item_is_draft_" + feed_item_id);
	var is_draft = 0;
	if (is_draft_field) {
		is_draft = $F(is_draft_field);
	}
	
	editField.disable();
	doAjax("api/feed/edit_item", function (t) { feedEditedCallback(t, feed_item_id) }, {
		"description" : editField.value,
		"feed_item_id": feed_item_id,
		"want_to_publish": is_unpublished,
		"publish_twitter": publish_twitter,
		"publish_facebook": publish_facebook,
		"draft": is_draft
	});
}

function feedEditedCallback(transport, feed_item_id) {
	var editField = $("history_feed_item_" + feed_item_id);
	if (! editField) return;

	var label = $("history_feed_item_label_" + feed_item_id);
	if (! label) return;
	
	editField.style.display = "none";
	label.style.display = "inline";
	
	var res = transport.responseJSON;
	if (! res) return;
	
	var newDesc = res.description;
	editField.setValue(newDesc);
	label.update(newDesc.escapeHTML());
	
	var row = $("history_feed_item_container_" + feed_item_id);
	if (! row) return;
	if (res.is_unpublished)
		row.addClassName("unpublished");
	else
		row.removeClassName("unpublished");
		
	var msgLabel = $("history_feed_item_message_" + feed_item_id);
	if (! msgLabel) return;
	if (res.message) {
		msgLabel.show();
		msgLabel.update(res.message.escapeHTML());
	} else {
		msgLabel.hide();
	}
}

function registerCheckPasswords() {
    var p1 = $("pass1"), p2 = $("pass2");

    if (! p1 || ! p2)
        return true;

    if (! p1.value) {
        alert("You must enter a password");
        return false;
    }

    if (p1.value != p2.value) {
        alert("Passwords do not match");
        return false;
    }

    return true;
}

function limit_textarea(max_chars, display_element, textarea_element) {
	if (! display_element || ! textarea_element)
		return;
		
	var update = function (evt) {
		var text = textarea_element.value;
		var remaining = Number(max_chars) - Number(text.length);
		
		if (remaining < 0) {
			textarea_element.value = text.substr(0, max_chars);
			remaining = 0;
		}
		
		display_element.innerHTML = remaining;
	};
		
	Event.observe(textarea_element, 'keyup', update);
	Event.observe(textarea_element, 'keydown', update);
	update();
}

function fck_textarea (eid) {
	var oFCKeditor = new FCKeditor(eid);
	oFCKeditor.BasePath = "http://www.lexy.com/static/js/fckeditor/";
	oFCKeditor.ReplaceTextarea() ;
}

// check event and see if the enter keycode was pressed
function checkEnter(e) {
	var characterCode;

	if (e && e.which) {
		e = e;
		characterCode = e.which;
	} else {
		characterCode = e.keyCode;
	}

	if (characterCode == Event.KEY_RETURN) {
		return true;
	} else {
		return false;
	}
}

// set up multi-part phone fields
function setupPhoneFields() {
    if (! $("p1") || ! $("p2")) return;
    
    $("p1").observe("keyup", function () {
        if ($("p1").value.length > 2)
            $("p2").focus();
        return false;
    });
    
    $("p2").observe("keyup", function () {
        if ($("p2").value.length > 2)
            $("p3").focus();
        return false;
    });
}

// destroy popups if a click happens outside
document.observe("click", function (evt) {
    if (currentPopup) {
        if (evt.findElement(".popup"))
            return;
        
        destroyPopup(currentPopup);
    }
});

function destroyPopup(popup) {
    if (popup) {
        document.body.removeChild(popup);
        popup = null;
        currentPopup = null;
    }
}
var currentPopup;

function showAjaxPopup(evt, url, requestArgs, popupClass, feed_id, item_id) {
    if (currentPopup) {
        destroyPopup(currentPopup);
    }
    
    if (! requestArgs)
        requestArgs = {};
        
    // request view without wrapper
    requestArgs.popup_view = 1;
    
    // find mouse location
    var xPos = Event.pointerX(evt);
    var yPos = Event.pointerY(evt);
    if (! xPos || ! yPos)
        return;
        
    // create popup
    var popup = document.createElement("div");
    Element.addClassName(popup, popupClass);
    popup.innerHTML = "Loading...";
    
    // position popup
    popup.style.position = "absolute";    
    xPos = Math.min(Math.max(0, xPos), document.viewport.getWidth() - popup.getWidth() - 18);
    popup.style.left = xPos + "px";
    popup.style.top = yPos + "px";
    
    document.body.appendChild(popup);
    // close if theres a click inside, unless its a link
    popup.observe("click", function (evt) {
        var target = Event.element(evt);
        if (target && target.tagName.toLowerCase() == "a") {
            return false;
        }
        
        if (! target || target.tagName.toLowerCase() != "input")
            Event.stop(evt); 
            
        return true;
    });
    currentPopup = popup;
    
    url = lexyBaseUrl + url;
    
    // load data
    new Ajax.Request(url, {
	  method: 'get',
      parameters: requestArgs,
	  onComplete: function(transport) {
	    if (transport.responseText)
	      popup.innerHTML = transport.responseText;
	      
	      // recalculate position since the size changed
	      xPos = Math.min(Math.max(0, xPos), document.viewport.getWidth() - popup.getWidth() - 18);
	      yPos = document.viewport.getScrollOffsets().topValue + Math.min(Math.max(0, yPos), document.height - popup.getHeight() - 10);
          popup.style.left = xPos + "px";
          popup.style.top = yPos + "px";
          
          var widgetId = "popupwidget" + requestArgs.audiofeeditem_id + "_content";
          var so = new SWFObject("http://www.lexy.com/static/4info_widget.swf", widgetId, "66", "18", "8", "#FFFFFF");
             so.addVariable("ws", "http://www.lexy.com/feed/podcast?id=" + feed_id + "%26item_id=" + item_id);
             so.addParam("wmode", "transparent");
             so.write(widgetId);
	  }
	});
	
	// don't follow link
	Event.stop(evt);
}
