/*******************************************************************************
# name:	wp_alimama.js
# for:	wordpress plugin wp_alimama(www.imluke.net/ideas/wp_alimama)
# by:	Luke
# Copy righted under GPL 
*******************************************************************************/

/*-----------------------------form hanle-------------------------------------*/
function showEditSite() {
	toggle_display("site");
}

function deleteAll() {
	ack = window.confirm("确定要删除所有信息吗？这会删除您网站上所有自动添加的广告。\n不过删除这些信息不会影响您在阿里妈妈的帐户。");
	if(ack) { 
		document.getElementById("accoutn_action").value = "delete_all"
		document.getElementById("account_form").submit();
	}
}

function linkSiteid(siteid) {
	document.getElementById("unlinked_siteid").value = siteid;
	document.getElementById("unlinked_action").value = "link_siteid";
	document.getElementById("unlinked_form").submit();	
}
function deleteSiteid(siteid) {
	document.getElementById("linked_siteid").value = siteid;
	document.getElementById("linked_action").value = "delete_siteid";
	document.getElementById("linked_form").submit();
}

function deleteAdzone(zoneid) {
	document.getElementById("manage_zoneid").value = zoneid;
	document.getElementById("manage_action").value = "zone_delete";
	document.getElementById("manage_adzones").submit();
}

function showAddAdzone() {
	toggle_display("zone_add_box");
	toggle_display("new_adzone");
}

function hideEditAdzone() {
	toggle_display("zone_edit_box");
}

function showEditAdzone(zoneid) {
	document.getElementById("manage_zoneid").value = zoneid;
	document.getElementById("manage_action").value = "show_edit_zone";
	document.getElementById("manage_adzones").submit();
}

function showEditStyle(zoneid) {
	document.getElementById("manage_zoneid").value = zoneid;
	document.getElementById("manage_action").value = "show_edit_style";
	document.getElementById("manage_adzones").submit();
}

function submitDisplay(zoneid,handler) {
	document.getElementById("manage_zoneid").value = zoneid;
	document.getElementById("manage_action").value = "edit_display";
	document.getElementById("manage_display").value = handler.value;
	document.getElementById("manage_adzones").submit();
}

function toggle_display(id) {
	if(document.getElementById(id).style.display!="none"){
		document.getElementById(id).style.display="none";
	} else {
		document.getElementById(id).style.display="";
	}
}

function updateStyle(elem) {
	/*
	titlecolor -> main_title.color, div_titlecolor.background-color
	descolor->main_text_td, div_descolor.background-color
	linkcolor->main_link_td.color, div_linkcolor.background-color
	bordercolor->preview.border-color, div_bordercolor.background-color
	bgcolor->preview.background-color, div_bgcolor.background-color
	bottomcolor-> NULL, div_bottomcolor.background
	bgpic->preview.background-image, div_bgpic.background-image
	anglesize->NULL, div_anglesize.src
	icon->icon_container.src, NULL
	*/
	
	var value = elem.value;
	var	parm = elem.name;
	//check color code
	if( parm == "titlecolor" || parm == "descolor" || parm == "linkcolor" ||
		parm == "bordercolor" || parm == "bgcolor" || parm == "bottomcolor" ) {
		var regex = /^[a-fA-F0-9]{6}$/;
		if(value.match(regex) == null) {
			window.alert("错误的颜色格式:"+value+"!\n正确格式为:000000-FFFFFF");
			elem.value = "CCCCCC";
			value = "CCCCCC";
		}
	}
	
	switch (parm) {
		case "titlecolor":
			document.getElementById("div_"+parm).style.backgroundColor = "#" + value;
			document.getElementById("main_title").style.color = "#"+value;
			break;
		case "descolor":
			document.getElementById("div_"+parm).style.backgroundColor = "#"+value;
			document.getElementById("main_text_td").style.color = "#"+value;
			break;
		case "linkcolor":
			document.getElementById("div_"+parm).style.backgroundColor = "#"+value;
			document.getElementById("main_link_td").style.color = "#"+value;
			break;
		case "bordercolor":
			document.getElementById("div_"+parm).style.backgroundColor = "#"+value;
			document.getElementById("preview").style.borderColor = "#"+value;
			break;
		case "bgcolor":
			document.getElementById("div_"+parm).style.backgroundColor = "#"+value;
			document.getElementById("preview").style.backgroundColor = "#"+value;
			break;
		case "bottomcolor":
			document.getElementById("div_"+parm).style.backgroundColor = "#"+value;
			break;
		case "bgpic":
			document.getElementById("div_"+parm).style.backgroundImage = _bgpic(value);
			document.getElementById("preview").style.backgroundImage = _bgpic(value);
			break;
		case "anglesize":
			document.getElementById("div_"+parm).src = _anglepic(value).src;
			break;
		case "icon":
			document.getElementById("icon_container").src = _icon(value).src;
			break;
	}
	return true;
}	

function _bgpic(code) {
	if(code == 0) return "";
	return "url(../wp-content/plugins/wp_alimama/image/bg"+code+".gif)";
}

function _anglepic(code) {
	var img = new Image();
	img.src = "../wp-content/plugins/wp_alimama/image/zj"+code+".gif";
	return img;
}

function _icon(code) {
	var img = new Image();
	img.src = "../wp-content/plugins/wp_alimama/image/alimama"+code+".png";
	return img;
}

/*--------------------------------form validate-------------------------------*/
//display error msg
function showError(id, msg) {
	if(!id) return;
	msgbox = document.getElementById(id+"_msg");
	if(!msgbox) return;

		msgbox.innerHTML = msg;
		msgbox.style.display = "";
		msgbox.style.color = "#FF0000";
}

function hideMsg(id) {
	msgbox = document.getElementById(id+"_msg");
	msgbox.style.color = "#999999";
	msgbox.style.display = "none";
}

//display pre-defined tips
//FIXME: won't work after fault, default value changed
function showMsg(id) {
	msgbox = document.getElementById(id+"_msg");
	msgbox.style.color = "#999999";
	msgbox.style.display = "";
}

//trim white space
function jsTrim(value){
  return value.replace(/(^\s*)|(\s*$)/g,"");
}


//byte length
function LenB(str){
   return str.replace(/[^\x00-\xff]/g,"**").length;
}


//verify email
function checkEmail (ref) {
    var emailStr = ref.value;
	var id = ref.id;

    var emailPat=/^(.+)@(.+)$/
    var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
    var validChars="\[^\\s" + specialChars + "\]"
    var quotedUser="(\"[^\"]*\")"
    var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
    var atom=validChars + '+'
    var word="(" + atom + "|" + quotedUser + ")"
    var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
    var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

    var matchArray=emailStr.match(emailPat)
    if (matchArray==null) 
    {
       showError(id,"email地址格式错误,检查@和.字符是否正确输入");
        return false
    }
    var user=matchArray[1]
    var domain=matchArray[2]

    // See if "user" is valid 
    if (user.match(userPat)==null) 
    {
        showError(id, "Email地址格式不正确.");
        // fieldName.focus();
        return false
    }

    /* if the e-mail address is at an IP address (as opposed to a symbolic
       host name) make sure the IP address is valid. */
    var IPArray=domain.match(ipDomainPat)
    if (IPArray!=null) 
    {
        for (var i=1;i<=4;i++)
        {
            if (IPArray[i]>255)
            {
                showError(id,"IP地址填写不正确!");
                return false
            }
        }
        hideMsg(id);
        return true
    }

    // Domain is symbolic name
    var domainArray=domain.match(domainPat)
    if (domainArray==null) 
    {
        showError(id,"不正确的域名.");
        return false
    }

    /* domain name seems valid, but now make sure that it ends in a
    three-letter word (like com, edu, gov) or a two-letter word,
    representing country (uk, nl), and that there's a hostname preceding 
    the domain or country. */

    var atomPat=new RegExp(atom,"g")
    var domArr=domain.match(atomPat)
    var len=domArr.length
    if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>4) 
    {
        // the address must end in a two letter or four letter word.
        showError(id,"域名后缀名不正确.");
        return false
    }

    // Make sure there's a host name preceding the domain.
    if (len<2)
    {
        showError(id,"缺少服务器名!");
        return false
    }

    // If we've got this far, everything's valid!
    hideMsg(id);
    return true;
}

//funny function from alimama  check URL
function isValidURL(urlstr) {
	var sina="http://blog.sina.com.cn";
	var baidu="http://hi.baidu.com";
	var donews="http://blog.donews.com";
	var hexun="http://hexun.com";
	var hexunblog="http://blog.hexun.com";
	
	if(urlstr.toLowerCase().indexOf(sina,0)==0) return true;
	if(urlstr.toLowerCase().indexOf(baidu,0)==0) return true;
	if(urlstr.toLowerCase().indexOf(donews,0)==0) return true;
	if(urlstr.toLowerCase().indexOf(hexun,0)==0) return true;
	if(urlstr.toLowerCase().indexOf(hexunblog,0)==0) return true;
	 
	var pan =/^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)[A-Za-z0-9-]+(\.+[A-Za-z0-9-]+)+(\/)?$/;
	if (LenB(urlstr)>0) {
		urlstr = jsTrim(urlstr);
		if (urlstr.match(pan) == null)
			return false;
		else
			return true;
	}
	return false;
}

//check passward
function isRightPW(ref) {
	var pwd = ref.value;
	var id = ref.id;
	var re= "^[a-zA-Z0-9]{6,16}$";
	if (pwd.match(re) == null) {
		showError(id,"密码必须由6-16位数字字母组成");
		return false;
	}
	hideMsg(id);
	return true;
}




