var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var bannerClick = false;
var flash_elements = null;
YAHOO.namespace("mc");

YAHOO.mc.alert = function(message)
{
	YAHOO.alert.setBody(message);
	YAHOO.alert.show();
}

YAHOO.mc.alertInit = function()
{
	Dom.replaceClass('gc_banner','myc_hidden','myc_shown');
	YAHOO.mc.checkFlash();
	Event.addListener('MCBody', "mouseup", YAHOO.mc.getHighlight); 
	YAHOO.mc.startAutocomplete();
	var handleOk = function() {
		this.hide();
		return true;
	};
	var div = document.createElement('div');
	div.id = 'alert';
	document.body.appendChild(div);
	YAHOO.alert = new YAHOO.widget.SimpleDialog(div.id, { 
		width: "300px",
		fixedcenter: true,
		visible: false,
		draggable: false,
		close: false,
//		icon: YAHOO.widget.SimpleDialog.ICON_HELP,
		constraintoviewport: true,
		buttons: [ 
			{ text:"Ok", handler:handleOk, isDefault:true }
		]
	});
	YAHOO.alert.setHeader('MyCoupons.com');
	YAHOO.alert.render();
}
YAHOO.util.Event.onDOMReady(YAHOO.mc.alertInit);

YAHOO.mc.bannerExpand = function(action){
	if (action.match('expand')){
			var attributes = {
		   height: { to: 630 }
		};
		var myAnim = new YAHOO.util.Anim('MCImageBanner', attributes);
		myAnim.duration = 0.25;
		myAnim.animate();

	}
	else {
		var attributes = {
		   height: { to: 51 }
		};
		var myAnim = new YAHOO.util.Anim('MCImageBanner', attributes);
		myAnim.animate();
	}
}


YAHOO.mc.gcExpand = function(){
	if (!bannerClick){
		bannerClick = true;
		var attributes = {
		   height: { to: 375 }
		};
		var myAnim = new YAHOO.util.Anim('gc_banner', attributes);
		myAnim.duration = 1.00;
		myAnim.animate();

	}
	else {
		bannerClick = false;
		var attributes = {
		   height: { to: 40 }
		};
		var myAnim = new YAHOO.util.Anim('gc_banner', attributes);
		myAnim.duration = 0.25;
		myAnim.animate();
//		Dom.replaceClass('gc_large','myc_shown','myc_hidden');
	}
}

YAHOO.mc.checkFlash = function(){
	if (!jaaulde.utils.flashsniffer.installed() || !jaaulde.utils.flashsniffer.meetsMinVersion( 9 )){
		YAHOO.mc.turnOffFlash();
		return false;
	}
	else {
		ZeroClipboard.setMoviePath('http://media.mycoupons.com/js/zeroclipboard/ZeroClipboard10.swf');
	}
}

YAHOO.mc.checkFlashBanner = function(){
	if (jaaulde.utils.flashsniffer.installed() && jaaulde.utils.flashsniffer.meetsMinVersion( 9 )){
		var flash = document.createElement('object');
		flash.setAttribute('classid','clsid:d27cdb6e-ae6d-11cf-96b8-444553540000');
		flash.setAttribute('codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0');
		flash.setAttribute('width','960');
		flash.setAttribute('height','274');
		flash.setAttribute('id','pushOutBanner');
		flash.setAttribute('align','left');
		var param = document.createElement('param');
		param.setAttribute('name','allowScriptAccess');
		param.setAttribute('value','sameDomain');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','allowFullScreen');
		param.setAttribute('value','false');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','movie');
		param.setAttribute('value','/images/banners/pushOutBanner.swf?myMsg=coming from	flash&merchantLink=http://gverner.mc6dev.mycoupons.com/about-us.html');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','menu');
		param.setAttribute('value','false');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','quality');
		param.setAttribute('value','high');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','scale');
		param.setAttribute('value','noscale');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','salign');
		param.setAttribute('value','lt');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','wmode');
		param.setAttribute('value','transparent');
		flash.appendChild(param);
		param = document.createElement('param');
		param.setAttribute('name','bgcolor');
		param.setAttribute('value','#ffffff');
		flash.appendChild(param);
		var embed = document.createElement('embed');
		embed.setAttribute('src','/images/banners/pushOutBanner.swf?myMsg=coming from flash&merchantLink=http://gverner.mc6dev.mycoupons.com/about-us.html');
		embed.setAttribute('quality','high');
		embed.setAttribute('scale','noscale');
		embed.setAttribute('salign','lt');
		embed.setAttribute('bgcolor','#ffffff');
		embed.setAttribute('pluginspage','http://www.adobe.com/go/getflashplayer');
		embed.setAttribute('type','application/x-shockwave-flash');
		embed.setAttribute('wmode','transparent');
		embed.setAttribute('width','960');
		embed.setAttribute('height','274');
		embed.setAttribute('name','pushOutBanner');
		embed.setAttribute('align','left');
		embed.setAttribute('allowScriptAccess','sameDomain');
		embed.setAttribute('allowFullScreen','false');
		flash.appendChild(embed);
		Dom.get('MCFlashBanner').appendChild(flash);
	}
}

YAHOO.mc.checkFlashInitial = function(){
	if (jaaulde.utils.flashsniffer.installed() && jaaulde.utils.flashsniffer.meetsMinVersion( 9 )){
		var fileref=document.createElement('script')
	  fileref.setAttribute("type","text/javascript")
	  fileref.setAttribute("src", 'http://media.mycoupons.com/js/zeroclipboard/ZeroClipboard.js');
		document.getElementsByTagName("head")[0].appendChild(fileref);
	}
}

YAHOO.mc.clearCache = function(){
	var callback = {
		success: function(o)
		{
			YAHOO.mc.loading(false);
			YAHOO.mc.alert('Cache Cleared');
		},
		failure: function(o)
		{
			YAHOO.mc.loading(false);
		}
	};
	YAHOO.mc.loading(true, 'Clearing...');
	var url = '/webservices/clearMemcache';
	YAHOO.util.Connect.asyncRequest('POST', url, callback);
}

YAHOO.mc.closeSearchExtension = function(){
	Dom.replaceClass('mycSearchBarExtension','myc_shown','myc_hidden');
	if (document.location.href.match(/mc6dev/)){
		document.cookie = 'mycsearchbarextensionsession=1; domain=.mc6dev.mycoupons.com; path=/';
	}
	else {
		document.cookie = 'mycsearchbarextensionsession=1; domain=.mycoupons.com; path=/';
	}
}

YAHOO.mc.convertURL = function(str){
	var regExp = /&/gi;
	str = str.replace(regExp, "*AND*");
	regExp = / /gi;
	return encodeURI(str.replace(regExp, "+"));
};


YAHOO.mc.confirm = function(title, message)
{
	YAHOO.confirm.setHeader(title);
	YAHOO.confirm.setBody(message);
	YAHOO.confirm.show();
}

YAHOO.mc.dontshowSearchExtension = function(){
	var date = new Date();
	date.setTime(date.getTime()+(356*24*60*60*1000));
	var expires = "expires="+date.toGMTString();
	if (document.location.href.match(/mc6dev/)){
		document.cookie = 'mycsearchbarextension=1; ' + expires + '; domain=.mc6dev.mycoupons.com; path=/';
	}
	else {
		document.cookie = 'mycsearchbarextension=1; ' + expires + '; domain=.mycoupons.com; path=/';
	}
	YAHOO.mc.closeSearchExtension();
}

YAHOO.mc.getHighlight = function(){
	var txt = '';
  if (window.getSelection){
      txt = window.getSelection();
  }
  else if (document.getSelection){
      txt = document.getSelection();
  }
  else if (document.selection){
    txt = document.selection.createRange().text;
  }
  txt = new String(YAHOO.lang.trim(txt));
  if (txt.length && !txt.match(/Click to Get Offer/)){
    var codes = Dom.getElementsByClassName('myc_highlight_code');
    var link = '';
    txt = YAHOO.lang.trim(txt);
    eval("var regExp = /" + txt + "/");
    for (i = 0; i < codes.length; ++i){
    	var trimmed_code = YAHOO.lang.trim(codes[i].innerHTML);
    	if (trimmed_code.match(txt)){
    		link = codes[i].href;
    		break;
    	}
    }
  	if (!Dom.get('myc_image_track')){
			var newimg = document.createElement('img');
			newimg.setAttribute('class','myc_hidden');
			newimg.setAttribute('src',link);
			newimg.setAttribute('height','0px');
			newimg.setAttribute('width','0px');
			newimg.setAttribute('id','myc_image_track');
			Dom.get('myc_footer_anchor').appendChild(newimg);
		}
		else {
			Dom.get('myc_image_track').src = link;
		}
  }
}

YAHOO.mc.installSearchExtension = function(){
	window.external.AddSearchProvider('http://www.mycoupons.com/myc.xml');
	var date = new Date();
	date.setTime(date.getTime()+(356*24*60*60*1000));
	var expires = "expires="+date.toGMTString();
	if (document.location.href.match(/mc6dev/)){
		document.cookie = 'mycsearchbarextension=1; ' + expires + '; domain=.mc6dev.mycoupons.com; path=/';
	}
	else {
		document.cookie = 'mycsearchbarextension=1; ' + expires + '; domain=.mycoupons.com; path=/';
	}
	YAHOO.mc.closeSearchExtension();
}

YAHOO.mc.LiveHelp = function()
{
	var div_name = 'MCLiveHelp';
	var div = YAHOO.util.Dom.get(div_name);
	if(!div)
	{
		var div = document.createElement('div');
		div.id = div_name;
		document.body.appendChild(div);
	}
	// Initialize the temporary Panel to display while waiting for external content to load
	if(!YAHOO.livehelp)
	{
		YAHOO.livehelp = new YAHOO.widget.Panel(div_name, { 
			width:"400px", 
			fixedcenter:true, 
			close:true, 
			draggable:true, 
			zindex:4,
			visible:false
		});
		YAHOO.livehelp.render();
	}
	YAHOO.livehelp.setHeader('MyCoupons.com LiveHelp');
	var url = '/LiveZilla/livezilla.php';
	YAHOO.livehelp.setBody('<iframe src="'+url+'" style="width:375px; height:400px;"></iframe>');
	YAHOO.livehelp.show();
}

YAHOO.mc.loadFB = function(){
	if (!document.location.href.match(/p=all/)){
		var FB = Dom.getElementsByClassName('facebookButtons');
		for (var i = 0; i < FB.length; ++i){
			var iUrl = FB[i].innerHTML.replace(/\<.+$/,''); 
			var newIframe = document.createElement('iframe');
			var url = 'http://www.facebook.com/plugins/like.php?href=' +iUrl + '&layout=button_count&show_faces=false&width=90&action=like&colorscheme=light&height=21';
			newIframe.setAttribute('src', url);
			newIframe.setAttribute('scrolling','no');
			newIframe.setAttribute('height','21px');
			newIframe.setAttribute('width','90px');
			newIframe.setAttribute('frameBorder',0);
			newIframe.setAttribute('style',"overflow:hidden; margin-top: -2px; float:right;");
			newIframe.setAttribute('allowTransparency',"true");
			FB[i].innerHTML = '';
			FB[i].appendChild(newIframe);
			FB[i].style.display = 'list-item';
		}
	}
}

YAHOO.mc.loading = function(show, msg){
	if(!YAHOO.loading)
	{
		// Initialize the temporary Panel to display while waiting for external content to load
		YAHOO.loading = new YAHOO.widget.Panel("wait", { 
			width:"240px", 
			fixedcenter:true, 
			close:false, 
			draggable:false, 
			zindex:4,
			modal:true,
			visible:false
		});
		var msg = (msg) ? msg : "Loading, please wait...";
		YAHOO.loading.setHeader(msg);
		YAHOO.loading.setBody('<img src="http://l.yimg.com/a/i/us/per/gr/gp/rel_interstitial_loading.gif" />');
		YAHOO.loading.render(document.body);
	}
	if(show == true)
	{
		YAHOO.loading.show();
	}
	else
	{
		YAHOO.loading.hide();
	}
};

YAHOO.mc.pageGetPath = function(page)
{
	if(!page)
	{
		var page = PAGE;
	}
	var count = 0;
	while(page.indexOf('|') >= 0)
	{
		page = page.replace('|', '/');
	}
	return page;
}

YAHOO.mc.pageConvertPath = function(page)
{
	if(!page)
	{
		var page = PAGE;
	}
	var count = 0;
	while(page.indexOf('/') >= 0)
	{
		page = page.replace('/', '|');
	}
	return page;
}

YAHOO.mc.redirect = function(url){
	window.open(url);	
}

YAHOO.mc.sendHelpEmail = function(form, coupon_id){
	// VALIDATE SUBJECT
	if(form.mydropdown.value == '')
	{
		alert('You must select a subject.');
		return false;
	}

	// VALIDATE COMMENT
	if(form.body.value == '')
	{
		alert('Please enter a comment.');
		return false;
	}
	var subject = form.mydropdown.value;
	subject = 'Coupon: ' + coupon_id + ' ' + subject;
	var comment = form.body.value;
	
	YAHOO.mc.loading(true, 'Sending, please wait...');
	var callback = {
		success: function(o)
		{
			YAHOO.mc.loading(false);
			alert("Your comment has been sent to MyCoupons.\n\nThank You.")
		},
		failure: function(o)
		{
			YAHOO.mc.loading(false);
		}
	};
	var url = '/coupon/AJAX_sendHelpEmail/';
	query = 'data[subject]=' + escape(subject) + '&data[text]=' + escape(comment);
	YAHOO.util.Connect.asyncRequest('POST', url, callback, query);
	return false;
}

YAHOO.mc.showFlashDivHover = function(coupon_id){
	Dom.replaceClass('myc_flash_container_' + coupon_id, 'myc_hidden', 'myc_shown');
	Dom.replaceClass('no_flash_' + coupon_id, 'myc_shown', 'myc_hidden');
}

YAHOO.mc.startAutocomplete = function(){
	if (window.document.location.href.match(/mycoupons\.com/i)){
		// Use an XHRDataSource
	    var oDS = new YAHOO.util.XHRDataSource("http://www.mycoupons.com/webservices/autocomplete/");
	    // Set the responseType
	    oDS.responseType = YAHOO.util.XHRDataSource.TYPE_TEXT;
	    // Define the schema of the delimited results
	    oDS.responseSchema = {
	        recordDelim: "\n",
	        fieldDelim: "\t"
	    };
	    // Enable caching
	    oDS.maxCacheEntries = 60;
			
	    // Instantiate the AutoComplete
	    myAutoComp = new YAHOO.widget.AutoComplete("myc_searchField", "myc_autocomplete_container", oDS);
	    myAutoComp.generateRequest = function(sQuery) {
			    return sQuery;
			};
			myAutoComp.maxResultsDisplayed = 15;	
			myAutoComp.queryDelay = 0.25;
			myAutoComp.minQueryLength = 2;
			myAutoComp1.queryMatchSubset = true;
			myAutoComp.useIFrame = true;
			// Container will expand and collapse vertically
			myAutoComp.animVert = true;
	    return {
	        oDS: oDS,
	        myAutoComp: myAutoComp
	    };
	}
};

YAHOO.mc.stringToCake = function(string)
{
	// REMOVE UNDERSCORES AND CAPITALIZE FIRST LETTER AFTER IT
	var count = 0;
	while(string.indexOf('_') > 0)
	{
		var pos = string.indexOf('_')+1;
		string = string.substr(0,pos) + string.substr(pos,1).toUpperCase() + string.substr(pos+1);
		string = string.replace('_', '');
	}
	// CAPITLIZE FIRST LETTER
	string = string.substr(0,1).toUpperCase() + string.substr(1);
	return string;
}

YAHOO.mc.prepareSearchUrl = function(){
	var keyword = YAHOO.lang.trim(Dom.get('myc_searchField').value);
	if (keyword.length){
		keyword = keyword.replace(/\-/gi, '^');
		keyword =  YAHOO.mc.convertURL(keyword);
		keyword = keyword.replace(/\+/gi, '-');
		var url = '/search/decision/' + keyword;
		document.location = url;
	}
	return false;
};

YAHOO.mc.tabChange = function(el)
{
	var isTab = function(el)
	{
		return (el.className == 'tabInactive' || el.className == 'tabActive') ? true : false;
	}
	// SET ALL TABS TO INACTIVE
	var tabs = YAHOO.util.Dom.getElementsBy(isTab, 'div', YAHOO.util.Dom.get('tab_area'));
	for(var n in tabs)
	{
		var tab = tabs[n];
		var tab_content = YAHOO.util.Dom.get(tab.id+'s');
		tab.className = 'tabInactive';
		tab_content.style.display = 'none';

		// SHOW SELECTED TAB
		if(el.id == tab.id)
		{
			tab.className = 'tabActive';
			tab_content.style.display = '';
		}
	}
}

YAHOO.mc.submitEmailNotification = function()
{
	var email = YAHOO.util.Dom.get('hidden_mc_newsletter_email').value;
	if(email == "")
	{
		YAHOO.mc.alert('Please enter an email address');
		YAHOO.util.Dom.get('hidden_mc_newsletter_email').focus();
		return false;
	}
	var reg = /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/i;
	if(!email.match(reg))
	{
		YAHOO.mc.alert('You must provide a valid Email Address');
		YAHOO.util.Dom.get('hidden_mc_newsletter_email').focus();
		return false;
	}
	var callback = {
		success: function(o)
		{
			YAHOO.mc.loading(false);
			YAHOO.mc.alert(o.responseText);
		},
		failure: function(o)
		{
			YAHOO.mc.loading(false);
		}
	};
	YAHOO.mc.loading(true);
	var url = '/newsletter/AJAX_subscribe/'+email;
	YAHOO.util.Connect.asyncRequest('POST', url, callback);
}
			
YAHOO.mc.hideShowSignup = function(){
	if (Dom.hasClass('hidden_signup', 'myc_hidden')){
		Dom.replaceClass('hidden_signup', 'myc_hidden', 'myc_shown');
	}
	else {
		Dom.replaceClass('hidden_signup', 'myc_shown', 'myc_hidden');
	}
}

YAHOO.mc.startBanner = function(){
	setTimeout('YAHOO.mc.openBanner()', 3000);
}

YAHOO.mc.closeBanner = function(){
	if (bannerClick){
		YAHOO.mc.gcExpand();
	}
}

YAHOO.mc.openBanner = function(){
	if (!bannerClick){
		YAHOO.mc.gcExpand();
		setTimeout('YAHOO.mc.closeBanner()', 5000);
	}
}

YAHOO.mc.turnOffFlash = function(){
	var flashes = Dom.getElementsByClassName('myc_clipboard');
	for (i = 0; i < flashes.length; ++i){
		Dom.replaceClass(flashes[i],'myc_shown','myc_hidden');
		Dom.removeClass(flashes[i],'myc_clipboard');
	}
}

YAHOO.mc.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;
	}
}