function add_bookmark()
{
	var url="http://www.couponsnapshot.co.nz";
	var title="www.couponsnapshot.co.nz";

	if (window.sidebar)
	{
		window.sidebar.addPanel(title, url,"");
	}
	else if( document.all )
	{
		window.external.AddFavorite( url, title);
	}
	else if( window.opera && window.print)
	{
		return true;
	}
}

function is_element_empty(objid, focus)
{
	var obj = document.getElementById(objid);
	if(!obj.value)
	{
		if(focus)
		{
			obj.focus();
		}
		return false;
	}
	return true;
}

function is_valid_email(objid, focus)
{
	var obj = document.getElementById(objid);
	var pattern = /^[_a-z0-9\.\-]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}([\.][a-z0-9]{2})?$/i;
	if(!obj.value || !pattern.test(obj.value))
	{
		if(focus)
		{
			obj.focus();
		}
		return false;
	}
	return true;
}

function is_valid_url(objid, focus)
{
	var obj = document.getElementById(objid);
	var pattern = /^(http:\/\/|https:\/\/)/i;
	if(!obj.value || !pattern.test(obj.value))
	{
		if(focus)
		{
			obj.focus();
		}
		return false;
	}
	return true;
}

function submit_a_deal()
{
	if(!is_element_empty('usrname', true))
	{
		alert("your name can not be empty");
		return false;
	}
	if(!is_valid_email('email', true))
	{
		alert("email can not be empty, and should be a valid address");
		return false;
	}
	if(!is_element_empty('merchant', true))
	{
		alert("merchant name can not be empty");
		return false;
	}
	if(!is_element_empty('detail', true))
	{
		alert("detail description can not be empty");
		return false;
	}
	if(!is_valid_url('url', true))
	{
		alert("url can not be empty and should starts with http:// or https://");
		return false;
	}
	if(!is_element_empty('authcode', true))
	{
		alert("verification characters can not be empty");
		return false;
	}
	return true;
}
function submit_a_review()
{
	if(!is_element_empty('review_nick_name', true))
	{
		alert("your name can not be empty");
		return false;
	}
	if(!is_element_empty('review_title', true))
	{
		alert("Review Title can not be empty");
		return false;
	}
	if(!is_element_empty('review_detail', true))
	{
		alert("Review Detail can not be empty");
		return false;
	}
	if(!is_element_empty('review_scode', true))
	{
		alert("Security code can not be empty");
		return false;
	}
	return true;
}

function truncate_text(str,len)
{
	var arr = str.split(/\s/);
	var length = 0;
	var i;
	for(i=0;i<arr.length;i++)
	{
		length += arr[i].length + 1;
		if(length > len) break;
	}
	arr.length = i;
	return arr.join(" ") + ' ... ';
	//return str.slice(0,len) + ' ... ';
}

function truncate_list(html,len)
{
	var temp = $("<div/>");
	temp.html(html);
	var list = temp.children("a");
	temp = $("<div/>");
	if(len > list.size()) len = list.size();
	for(i=0;i<len;i++)
	{
		temp.append(" ");
		temp.append(list.get(i));
	}
	return temp.html() + " ";
}

function toggle_text_action_html(tp,len)
{
	if(tp == "more")
		return "<a href=\"#\" onclick=\"toggle_text(this," + len + ",'expand');PositionDivs();return false;\">more</a>";
	else if(tp == "hide")
		return "<a href=\"#\" onclick=\"toggle_text(this," + len + ",'collapse');PositionDivs();return false;\">hide</a>";
}

function toggle_list_action_html(tp,len)
{
	if(tp == "more")
		return "<a href=\"#\" onclick=\"toggle_list(this," + len + ",'expand');PositionDivs();return false;\" style=\"font-size:11px;\">&gt;&gt;</a>";
	else if(tp == "hide")
		return "<a href=\"#\" onclick=\"toggle_list(this," + len + ",'collapse');PositionDivs();return false;\" style=\"font-size:11px;\">&lt;&lt;</a>";
}

function toggle_text(selector,len,tp)
{
	$(selector).each(function(n){
		var j = (tp == "init") ? $(this) : $(this).prev();
		if(tp == "init" && j.data("orightml")) return;//forbid init twice
		if(tp == "init" && j.text().length > len) j.data("orightml",j.html());
		var orightml = j.data("orightml");
		if(!orightml) return;
		if(tp == "init")
		{
			j.html(truncate_html(orightml,len));
			j.after(toggle_text_action_html("more",len));
		}
		else if(tp == "collapse")
		{
			j.html(truncate_html(orightml,len));
			j.next().replaceWith(toggle_text_action_html("more",len));
		}
		else if(tp == "expand")
		{
			j.html(orightml + " ");
			j.next().replaceWith(toggle_text_action_html("hide",len));
		}
	});
}

function getOuterHtml(j)
{
	return $('<a/>').html(j.eq(0).clone()).html();
}

function getHtmlByText(text)
{
	return $('<a/>').text(text).html();
}

function getTextByHtml(html)
{
	return $('<a/>').html(html).text();
}

function truncate_html(html,len,level)
{
	if(level == null) level = 1;
	var obj_wrap = $('<a/>');
	var obj_html = $('<a/>' + html + '<a/>');
	var return_html = '';
	var b_return = false;
	//if(level == 1 && obj_html.text().length <= len) return html;
	
	obj_html.each(function(){
		if(b_return) return;
		var item_innerhtml = null;
		var item_outerhtml = "";
		var item_text = $(this).text();
		var item_length = item_text.length;

		if(typeof(this.outerHTML) === 'string') item_outerhtml = this.outerHTML;
		else item_outerhtml = getOuterHtml($(this));

		try{
			item_innerhtml = $(this).html();
		}
		catch(e){
			item_innerhtml = null;
			item_text = getTextByHtml(html);
		}

		if(item_text.length > len) b_return = true;
		if(item_innerhtml == null)
		{
			if(item_text.length > len)
			{
				item_text = truncate_text(item_text,len);
				obj_wrap.text(item_text);
				item_outerhtml = obj_wrap.html();
			} 
		}
		else
		{
			if(item_length > len)
			{
				var tag_start = item_outerhtml.substring(0,item_outerhtml.indexOf(">")+1);
				var tag_end = item_outerhtml.substr(item_outerhtml.lastIndexOf("<"));
				item_outerhtml = tag_start + truncate_html(item_innerhtml,len,level + 1) + tag_end;
			}
		}
		len -= item_length;
		if(item_outerhtml.toUpperCase() == "<A></A>")	return;
		return_html += item_outerhtml;
	});

	var s = (level == 1) ? " " : "";
	return return_html + s;
}

function toggle_list(selector,len,tp)
{
	$(selector).each(function(n){
		var j = (tp == "init") ? $(this) : $(this).prev();
		if(tp == "init" && j.data("orightml")) return;//forbid init twice
		if(tp == "init" && j.children("a").length > len) j.data("orightml",j.html());
		var orightml = j.data("orightml");
		if(!orightml) return;
		if(tp == "init")
		{
			j.html(truncate_list(orightml,len));
			j.after(toggle_list_action_html("more",len));
		}
		else if(tp == "collapse")
		{
			j.html(truncate_list(orightml,len));
			j.next().replaceWith(toggle_list_action_html("more",len));
		}
		else if(tp == "expand")
		{
			j.html(orightml + " ");
			j.next().replaceWith(toggle_list_action_html("hide",len));
		}
	});
}

$(document).ready(function(){
	toggle_text(".couponlist .couponitem_desc_content",300,"init");
	toggle_list(".couponlist .coupon_item_tag",3,"init");
	toggle_text("#merchantdesc,#swproddesc",500,"init");
});

