//
// application.js
//
function ltrim(str) {
    var pattern = new RegExp("^[\\s]+","gi");
    return str.replace(pattern,"");
}
function rtrim(str) {
    var pattern = new RegExp("[\\s]+$","gi");
    return str.replace(pattern,"");
}
function trim(str) {
    return rtrim(ltrim(str));
}

function expand(_id)
{
    new Ajax.Request("/site/shopping_cart/favorite_categories?id=" +_id,{method:'get',asynchronous:true, evalScripts:true}); 
}

function getfocus(aid){
    document.getElementById(aid).focus();
}

function create_element_and_set_attrs(element_type, attrs)
{
    if (!attrs) attrs = [];
    var new_element = document.createElement(element_type);
    for(i = 0;i< attrs.length; i++)
    {
        new_element.setAttribute(attrs[i][0], attrs[i][1]);
    }
    return new_element;
}


function generate_html(_form){
    if($A(_form['deal_id[]']).all(function(id_box){
        return !id_box.checked
    })){
        alert("Plase select deal to generate");
    }else{
        var url = "/manage/deals/generate_html";
        Element.show('generate_loadding_img');
        new Ajax.Request(url,{
            method:'post',
            parameters:Form.serialize(_form)
        });
    }
}

//function apple_show(form_id){
//    alert(form_id);
////  Dialog.confirm($('login').innerHTML, {className:"alphacube", width:400, okLabel: "login", cancelLabel: "cancel", onOk:function(win){ $('login_error_msg').innerHTML='Login or password inccorect'; $('login_error_msg').show(); Windows.focusedWindow.updateHeight(); new Effect.Shake(Windows.focusedWindow.getId()); return false;}}); 
//  Dialog.confirm($(form_id).innerHTML, {
//        className:"alphacube",
//        width:400, 
//        okLabel: "login", 
//        cancelLabel: "cancel", 
//        onOk:choose_category
//        }
//    ); 
//}
//function choose_category() { 
//    alert("chooooose it");
//    return true
//    $('login_error_msg').innerHTML='Login or password inccorect'; 
//    $('login_error_msg').show(); 
//    Windows.focusedWindow.updateHeight(); 
//    new Effect.Shake(Windows.focusedWindow.getId());
//    return false;
//}
function show_favorite_category(show_cat_id, ids, link)
{
    
    for(var i = 0; i < ids.length; i ++){
        hide_element = document.getElementById('favorite_category_' + ids[i]);
        Element.hide(hide_element);
    }
    show_element = document.getElementById('favorite_category_' + show_cat_id);
    Element.show(show_element);    
    return false;
}
function limitText(limitField, limitCount, limitNum) {
    if (limitField.value.length > limitNum) {
        limitField.value = limitField.value.substring(0, limitNum);
    } else {
        if (limitCount != null){
            limitCount.value = limitNum - limitField.value.length;
        }
		
    }
}

function check_submit_sign_up(){
    var i = 0
    var user_name = document.getElementsByTagName("input")[i + 1];
    var e_mail    = document.getElementsByTagName("input")[i + 2];
    var password1 = document.getElementsByTagName("input")[i + 3];
    var password2 = document.getElementsByTagName("input")[i + 4];
    // check user name
    if(user_name.value=="")
    {alert("user name should not be blank");
     return false;}
    if(user_name.value.length<4)
    {alert("user name is too short");
     return false;}  
    if(user_name.value.length>20)
    {alert("user name is too long");
     return false;}
    if(!new RegExp("[_a-zA-Z]","g").test(user_name.value.split("")[0]))
    {alert("user name shoule be beginned with letter");
     return false ;}
    if(!new RegExp("^[a-zA-Z0-9_]*$","g").test(user_name.value))
    {alert("user name shoule be letters , numbers and underline");
      return false; }
    // check email
    if(e_mail.value=="")
    {alert("e_mail should not be blank");
     return false;}
    if(!new RegExp("^[\\w._]+@\\w+\.(\\w+\.){0,3}\\w{2,4}$","g").test(e_mail.value.replace(/-|\//g,"")))
    {alert("the format of e_mail is wrong");
     return false;}
    //check  password
    if(password1.value=="")
    {alert("password should not be blank");
     return false;}
    if(password1.value.length<6)
     {alert("password is too short");
     return false;}
     if(password1.value.length>20)
     {alert("password is too long");
      return false;}
     if(password2.value==null||password2.value!=password1.value)
     {alert("the two password are defferent");
      return false;}
     return true;
}
function toggle_expand_icon(icon_id) {    
    icon = document.getElementById(icon_id);
    icon.innerHTML = (icon.innerHTML == '&gt;&gt;&gt;' ? '<<<' : '>>>');
    return true;
}

//
// manage.js
//
function disable_enter_to_submit(){
    if(document.forms.length > 0){
        if(document.forms[0].name == "login_form" || document.forms[0].name == "filter_form"){
        }else{
            var inputs = document.getElementsByTagName("input");
            for(var i=0;i<inputs.length;i++){
                inputs[i].onkeydown = function(event){
                    event = event || window.event;
                    if(event.keyCode==13){
                        var obj = event.target || event.srcElement
                        if(obj.id == "deal_add_outlink"){
                            return add_to_select_by_out_link();
                        }else if(obj.id == "deal_add_outlink_by_url_by_sku"){
                            return add_to_select_by_url_by_sku(jsonObj);
                        }else if(obj.id == 'merchant_add_coupon_type'){
                            return add_to_coupon_types_select(obj);
                        }else{
                            return false;
                        }
                    }
                };
            }
        }
    }
}
function one_option_remove_to_other(form, to){
    var from_sel = $(form);
    var to_sel = $(to);
    var options = from_sel.options;
    for(var i=0; i<options.length; i++){
        if(options[i].selected == true){
            var option = document.createElement("option");
            option.value = options[i].value;
            option.text = options[i].text;
            from_sel.options[i] = null;
            to_sel.options.add(option);
            i =- 1;
        }
    }
}
function del_from_select(id){
    var sel = $(id);
    sel.options[sel.selectedIndex] = null;
}
function edit_from_select(id, value){
    $(id).value = value;
}
function add_to_select_by_url_by_sku(obj){
    var out_link = trim($("deal_add_outlink_by_url_by_sku").value);
    var outlinks = out_link.split(" ");
    var merchant_id = $('deal_merchant_id').value;
    var url_by_sku = obj[merchant_id];
    var before = outlinks[0];
    var later = trim(out_link.substring(before.length, out_link.length));
    later = url_by_sku.replace("--SKU--", later);
    out_link = before + " " + later;
    if (!add_to_out_links_select(out_link)){
        $("deal_add_outlink_by_url_by_sku").focus();
        $('url_by_sku_msg').style.display = "";
    }else{
        $("deal_add_outlink_by_url_by_sku").value = '';
        $('url_by_sku_msg').style.display = "none";
    }
    return false;
}
function add_to_select_by_out_link(){
    var out_link = trim($("deal_add_outlink").value);
    if (!add_to_out_links_select(out_link)){
        $("deal_add_outlink").focus();
        $('deal_outlink_msg').style.display = "";
    }else{
        $("deal_add_outlink").value = '';
        $('deal_outlink_msg').style.display = "none";
    }
    return false;
}
function add_to_out_links_select(value){
    var out_link = value;
    var regex_num = /^[0-9]+$/;
    var outlinks = out_link.split(" ");
    if(regex_num.test(outlinks[0]) && outlinks.size()>1){
        var option = document.createElement("option");
        var sel = $("deal_outlink");
        for(var i=0;i<sel.length;i++){
            var select_opt = sel.options[i].value.split(" ");
            if(outlinks[0] == select_opt[0]){
                sel.options[i].value = out_link;
                sel.options[i].text = out_link;
                $("deal_add_outlink").value = '';
                $('deal_outlink_msg').style.display = "none";
                return true;
            }
        }
        option.value = out_link;
        option.text = out_link;
        $("deal_outlink").options.add(option);
        return true;
    }
    return false;
}
function add_to_coupon_types_select(obj){
    var coupon_type = trim(obj.value);
    if(coupon_type == ''){
        return false;
    }
    var option = document.createElement("option");
    option.value = '0_' + coupon_type;
    option.text = coupon_type;
    $("coupon_types").options.add(option);
    obj.value = '';
    return false;
}
function edit_to_coupon_types_select(obj){
    var coupon_type = trim(obj.value);
    if(coupon_type == ''){
        return false;
    }
    var sel = $("coupon_types");
    var option_value = sel.options[sel.selectedIndex].value.split('_');
    sel.options[sel.selectedIndex].text = coupon_type;
    sel.options[sel.selectedIndex].value = option_value[0] + '_' + coupon_type;
    obj.value = '';
    return false;
}

function moveup(id){
    var select_body =document.getElementById(id);
    if(select_body.selectedIndex != -1){
        var flag = select_body.selectedIndex;
        if(flag==0){
            alert("The Rule has already at the top level!");
            return;
        }
        //这里加入判断是因为ie下面无法使用insertBefore来调换1号和0号元素,故使用这种方法
        if(select_body.selectedIndex==1&&document.all){
            var temp=select_body[select_body.selectedIndex];
            var t=temp.parentNode;
            temp.parentNode.removeChild(temp);
            setTimeout(function(){t.insertBefore(temp,t.options[0]);},0)
        }else
            select_body[select_body.selectedIndex].parentNode.insertBefore(select_body[select_body.selectedIndex],select_body[select_body.selectedIndex-1])        
    }else
        alert("Please select a Rule!");
}
function movedown(id){         
    var select_body =document.getElementById(id);
    if(select_body.selectedIndex != -1){
        var flag = select_body.options.length;
        if(select_body.selectedIndex==flag-1){
            alert("Already reached bottom!");
            return;
        }
        select_body[select_body.selectedIndex].parentNode.insertBefore(select_body.options[select_body.selectedIndex],select_body.options[select_body.selectedIndex+2])
    }else
        alert("Please select a Rule!");         
}
function change_merchant_by_coupon_type(obj, value, type_id){
    var sel = $('coupon_coupon_type_id');
    sel.options.length = 0;
    sel.options[0] = new Option('', '');
    if(value > 0 && obj[value].length > 0){
        for(var i=0;i<obj[value].length;i++){
            var opt=new Option(obj[value][i].name, obj[value][i].id)
            sel.options[i+1] = opt
            if(type_id == obj[value][i].id){
                sel.options[i+1].selected = true;
            }
        }
    }
}
function change_merchant_by_sku(obj, value){
    if(value == "" || obj[value] == "" || obj[value] == null){
        $('url_by_sku_div').hide();
        //$('if_support_sku').hide();
        $('add_sku_button').disabled = "disabled"
        $('add_sku_button_ab').disabled = "disabled"
    }else{
        $('url_by_sku_div').show();
        //$('if_support_sku').show();
        $('add_sku_button').disabled = ""
        $('add_sku_button_ab').disabled = ""
    }
}
function delete_current_row(object){
    var new_tr = object.parentNode.parentNode;
    try {
        //new_tr.removeNode(true);
        //just ie , not w3c;
        // other idea
        var tmp = new_tr.parentNode;
        // 为了在ie和firefox下都能正常使用,就要用另一个方法代替,最取上一层的父结点,然后remove.
        tmp.removeChild(new_tr);
    }catch(e){}
}
function validator_schedule_config_form(){
    var regex_positive = /^-?\d+(\.\d+)?$/;
    var regex_timerange = /^\s*\d{1,2}(?::\d{1,2})?-\d{1,2}(?::\d{1,2})?\s*$/;
    var time_ranges = document.getElementsByName('schedule_config[time_range][]');
    var publish_freqs = document.getElementsByName('schedule_config[publish_freq][]');
    var deviations = document.getElementsByName('schedule_config[deviation][]');
    for(var i=0;i<publish_freqs.length;i++){
        var range = trim(time_ranges[i].value);
        if(i > 1 && !regex_timerange.test(range)){
            alert("please input the correct format in hour between 0 to 24, e.g:(hour-hour)11-12");
            time_ranges[i].focus();
            return false;
        }else if(i > 1 && regex_timerange.test(range)){
            var ranges = range.split('-');
            var begins = ranges[0].split(':');
            var ends = ranges[1].split(':');
            if(parseInt(begins[0]) > 24 || 
                parseInt(ends[0]) > 24 || 
                parseInt(begins[0]) >= parseInt(ends[0]) || 
                (begins[1] != null && parseInt(begins[1]) >= 60) || 
                (ends[1] != null && parseInt(ends[1]) >= 60)){
                alert("please input the correct format in hour between 0:00 to 24:00.\neg:(hour:minute-hour:minute)11:11-12:12");
                time_ranges[i].focus();
                return false;
            }
        }
        if(!regex_positive.test(trim(publish_freqs[i].value)) || parseInt(trim(publish_freqs[i].value)) < -1 || parseInt(trim(publish_freqs[i].value)) > 60){
            alert("please input the signless integral between 0 to 60.");
            publish_freqs[i].focus();
            return false;
        }
        if(!regex_positive.test(trim(deviations[i].value)) || parseInt(trim(deviations[i].value)) < 0 || parseInt(trim(deviations[i].value)) > 100){
            alert("please input the signless integral between 1 to 100.");
            deviations[i].focus();
            return false;
        }
    }
    return true;
}
function call_add_description_image(){
    var index = parseInt($('template3_images_size').value) + 1;
    $('template3_images_size').value = index;
    new Insertion.Before('template3_images_size', "\
<div><label>Image<input type='text' name='template3[i"+index+"][image_id]' style='width:20px;' /></label></div>\
<input type='hidden' name='template3[i"+index+"][id]' value='0' />\
<div><label>Image URL:</label>\
<input type='text' name='template3[i"+index+"][img_link]' /></div>\
<div>\
<div class='normal floatbegin'><label>Site Img URL:</label>\
<input type='text' name='template3[i"+index+"][image_url]' /></div>\
<div class='normal floatdiv'><label>Local Img File:</label>\
<input type='file' name='template3[i"+index+"][image]' /></div>\
</div>");
}


function add_htgt_step(){
    var index = parseInt($('htgt_step_size').value) + 1;
    $('htgt_step_size').value = index;
  
    default_value = ''
    if (index == 1)
    {
        default_value = "<a href=\"@out\" target=\"_blank\">Click  here</a> to go to @merchant_name"
    }

    new Insertion.Before('htgt_div0', "\
<div id='htgt_div"+index+"'><label>&nbsp;</label>\
  <span id='htgt_span"+index+"'>\
    <input type='text' name='deal[htgt_steps][]' id='htgt_textfield"+index+"' value='"+default_value+"'/>\
    <a href='javascript:void(0)' onclick='switchToTextarea("+index+")'><img src='/images/arrow_down_grey.gif'></a>\
  </span><a href='javascript:void(0)' onclick='remove_htgt_step("+index+")'><img src='/images/delete_grey.gif'></a>\
</div>"
);
    new Effect.Highlight('htgt_textfield'+index);
}

function add_specialfication(){
    var specailfication_size = $('specailfication_size');
    var index = parseInt(specailfication_size.value) + 1;
    specailfication_size.value = index;
    new Insertion.Before('htgt_div0', "\
<div id='speciaficaiton_div"+index+"'><label>Deal Attribute:&nbsp;</label>\
  <span id='speciaficaiton_span"+index+"'>\
    Abbreviation:<input type='text' name='category[abbreviate"+index+"]' style='width:150px'  id='abbreviate"+index+"'/>\
    Full Name:<input type='text' name='category[specialfication"+index+"]' style='width:150px' id='specialfication"+index+"'/>\
  </span><a href='javascript:void(0)' onclick='remove_htgt_step("+index+")'><img src='/images/delete_grey.gif'></a>\
</div>"
);
    new Effect.Highlight('abbreviate'+index);
    new Effect.Highlight('specialfication'+index);
}

function display_deal_specailficaton(category_id){    
    var specialfication = specialfication_json["category"+category_id];
    if(specialfication != null){
        var div = ["<div id='specialfication_div0'>"];
        for(attr in specialfication){
            value = "";
            if(category_id == orginal_category_id){
                value = orignal_special_json[attr];
                if(value == null) value='';
            }
            div.push("<div><label>"+specialfication[attr]+":</label>")
            div.push("<span><input type='text' name='deal[visual_special]["+attr+"]' value='"+value+"'></span>");
            div.push("</div>")
        }
        div.push("</div>");
        $("specialfication_div0").replace(div.join(' '));
        
    } else{
        $("specialfication_div0").replace("<div id='specialfication_div0'><input type='hidden' name='deal[visual_special]' value=null></div>");
    }
}

function remove_htgt_step(index){
    $('speciaficaiton_div'+index).remove();       
}

//both of link are close
function switchToTextfield(index){
    var value = $('htgt_textarea'+index).value;
    $('htgt_span'+index).update(
    '<input type="text" name="deal[htgt_steps][]" value="'+value+'" id="htgt_textfield'+index+'" />&nbsp;\
<a href="javascript:void(0)" onclick="switchToTextarea('+index+')"><img src="/images/arrow_down_grey.gif"></a>&nbsp;');
    new Effect.Highlight('htgt_textfield'+index);
}

function switchToTextarea(index){
    var value = $('htgt_textfield'+index).value;
    $('htgt_span'+index).update(
    '<textarea name="deal[htgt_steps][]" class="normal" id="htgt_textarea'+index+'">'+value+'</textarea>&nbsp;\
<a href="javascript:void(0)" onclick="switchToTextfield('+index+')"><img src="/images/arrow_up_grey.gif"></a>&nbsp;');
    new Effect.Highlight('htgt_textarea'+index);
}

function remove_specialfication(index){
    $('htgt_div'+index).remove();
}

function select_all(){
    var select_box = $('ifchecked');
    var check_boxies = document.getElementsByTagName('input');
    $A(check_boxies).each(function (box){
        if(box.id != 'ifchecked'){
            box.checked = select_box.checked;
        }
    });
}
function select_all_multiple_select(id){
    var sel = $(id);
    for(var i=0;i<sel.length;i++){
        sel.options[i].selected  = true;
    }
}
function focus_editor_name(){
    if($('filter_editor_name').value == "editor name"){
        $('filter_editor_name').value = "";
    }
    return true;
}
function blur_editor_name(){
    if($('filter_editor_name').value == ""){
        $('filter_editor_name').value = "editor name";
    }
}
function validator_deal_form(){
    if(validator_merchant() && validator_rbt() && validator_amount()){
        select_all_multiple_select('deal_outlink');
        return true;
    }
    return false;
}
function validator_merchant(){
    var merchant_id = $('deal_merchant_id');
    var merchant_product_id = $('deal_merchant_product_id');
    /*
  if(merchant_product_id.value != '' && merchant_id.value == ''){
    alert("You have to choose a merchant if merchant sku is set");
    merchant_id.focus();
    return false;
  }//*/
    return true;
}
function validator_rbt(){
//    if(($F('deal_rbt_exp_date1') != "") || ($F('deal_rbt_amount1') != "") || ($F('deal_rbt_url1') != "")){
//        if($F('deal_rbt_amount1') == "" || $F('deal_rbt_url1') == ""){
//            alert("amount or url of rebate 1 should not be empty");
//            return false;
//        }
//    }
//    if($F('deal_rbt_exp_date2') != "" || $F('deal_rbt_amount2') != "" || $F('deal_rbt_url2') != ""){
//        if($F('deal_rbt_amount2') == "" || $F('deal_rbt_url2') == ""){
//            alert("amount or url of rebate 2 should not be empty");
//            return false;
//        }
//    }
//    if($F('deal_rbt_exp_date3') != "" || $F('deal_rbt_amount3') != "" || $F('deal_rbt_url3') != ""){
//        if($F('deal_rbt_amount3') == "" || $F('deal_rbt_url3') == ""){
//            alert("amount or url of rebate 3 should not be empty");
//            return false;
//        }
//    }
    return true;
}
function validator_amount(){
    var regex_rational = /^-?[0-9]+\.?[0-9]{0,2}$/;
    var regex_positive = /^[0-9]+\.?[0-9]{0,2}$/;
    var regex_natural = /^[0-9]+\.?[0-9]{0,2}$/;
    var coupon_amount = $("deal[coupon_amount]");
    var rbt_amount1 = $("deal_rbt_amount1");
    var rbt_amount2 = $("deal_rbt_amount2");
    var rbt_amount3 = $("deal_rbt_amount3");
    var price = $("deal[price]");
    var orign_price = $("deal[price_orign]");
    var shipping_fee = $("deal[shipping_fee]");
    if(coupon_amount.value != "" && !regex_natural.test(coupon_amount.value)){
        alert("please input natural number");
        coupon_amount.focus();
        return false;
    }
    else if(rbt_amount1.value != "" && !regex_positive.test(rbt_amount1.value) && parseFloat(rbt_amount1.value) > 0){
        alert("please input positive number in rebate1 amount");
        rbt_amount1.focus();
        return false;
    }
    else if(rbt_amount2.value != "" && !regex_positive.test(rbt_amount2.value) && parseFloat(rbt_amount2.value) > 0){
        alert("please input positive number in rebate2 amount");
        rbt_amount2.focus();
        return false;
    }
    else if(rbt_amount3.value != "" && !regex_positive.test(rbt_amount3.value) && parseFloat(rbt_amount3.value) > 0){
        alert("please input positive number in rebate3 amount");
        rbt_amount3.focus();
        return false;
    }
    else if(price.value != "" && !regex_rational.test(price.value)){
        alert("please input rational number in price");
        price.focus();
        return false;
    }
    else if(orign_price.value != "" && !regex_rational.test(orign_price.value)){
        alert("please input rational number in orign price");
        orign_price.focus();
        return false;
    }
    else if(shipping_fee.value != "" && !regex_natural.test(shipping_fee.value)){
        alert("please input natural number in shipping fee");
        shipping_fee.focus();
        return false;
    }
    return true;
}
function submit_filter_form(url){
    var form = document.filter_virtual_form;
    form.target="_blank";
    form.action = url;
    form.submit();
    return true;
}
function submit_coupon_type_form(){
    select_all_multiple_select('coupon_types');
    return true;
}
function submit_featured_page_form(tag_id){
    select_all_multiple_select(tag_id);
    return true;
}
function show_deal_window(id,event){
    var x,y = "";
    event = event || window.event;
    if(event.pageX || event.pageY){
        x = event.screenX - window.pageXOffset;
        y = event.pageY - window.pageYOffset;
    }else {
        x = event.clientX;
        y = event.clientY;
    }
    var url = '/manage/deals/'+id;
    new Ajax.Request(url,{method:'get',onComplete:function(response) {
            dhtmlwindow.open("broadcastbox", 
            "inline",
            response.responseText, 
            "Deal", 
            "width=330px,height=300px,left="+x+",top="+y+",resize=0,scrolling=1", 
            "recal");
        }});
    return false;
}
function change_template_tab(id, times){
    for(var i=0;i<times;i++){
        $("menua"+i).className = "";
    }
    $("menua"+id).className = "current";
    $('deal_template').value = id;
    if (id==3)
    {
        $('add_template_image').disabled = ""
        $('add_template_image_ab').disabled = ""
    }
    else
    {
        $('add_template_image').disabled = "disabled"
        $('add_template_image_ab').disabled = "disabled"
    }
}
function generate_rbt_expire_date(date){
    date = trim(date);
    if (date == '')
        return '';
    else{
        var date_arr = date.split("-");
        var today = new Date();
        if (parseInt(date_arr[0]) == parseInt(today.getFullYear())){
            return " [Exp."+format_date(date_arr[1])+"/"+format_date(date_arr[2])+"]";
        }else{
            return " [Exp."+format_date(date_arr[1])+"/"+format_date(date_arr[2])+"/"+date_arr[0]+"]";
        }
    }
}
function format_date(date){
    if(date.length == 1){
        return "0"+date;
    }else{
        return date;
    }
}
function generate_deal_abstract(){
    if(!validator_rbt() || !validator_amount()){
        return false;
    }
    var text = "";
    var aaa = 0;
    var regex_url = /https?:\/\//;
    var regex_rational = /^-?[0-9]+\.?[0-9]{0,2}$/;
    var regex_positive = /^[0-9]+\.?[0-9]{0,2}$/;
    var regex_natural = /^[0-9]+\.?[0-9]{0,2}$/;
    var coupon_amount = $("deal[coupon_amount]").value;
    if(coupon_amount != "" && regex_natural.test(coupon_amount)){
        aaa += parseFloat(coupon_amount);
        var coupon_desc = $("deal_coupon_text").value;
        if(!coupon_desc == ""){
            text += " - $"+coupon_amount+" "+coupon_desc;
        }
    }
    var rbt_amount1 = $("deal_rbt_amount1").value;
    if(rbt_amount1 != "" && regex_positive.test(rbt_amount1)){
        aaa += parseFloat(rbt_amount1);
        var rebate_url1 = $("deal_rbt_url1").value;
        if(!regex_url.test(rebate_url1)){
            rebate_url1 = "http://" + rebate_url1;
        }
        var rebate_exp1 = $("deal_rbt_exp_date1").value;
        text += " - <a href=\""+rebate_url1+"\">$"+rbt_amount1+" rebate</a>";
        text += generate_rbt_expire_date(rebate_exp1);
    }
    var rbt_amount2 = $("deal_rbt_amount2").value;
    if(rbt_amount2 != "" && regex_positive.test(rbt_amount2)){
        aaa += parseFloat(rbt_amount2);
        var rebate_url2 = $("deal_rbt_url2").value;
        if(!regex_url.test(rebate_url2)){
            rebate_url2 = "http://" + rebate_url2;
        }
        var rebate_exp2 = $("deal_rbt_exp_date2").value;
        text += " - <a href=\""+rebate_url2+"\">$"+rbt_amount2+" rebate</a>";
        text += generate_rbt_expire_date(rebate_exp2);
    }
    var rbt_amount3 = $("deal_rbt_amount3").value;
    if(rbt_amount3 != "" && regex_positive.test(rbt_amount3)){
        aaa += parseFloat(rbt_amount3);
        var rebate_url3 = $("deal_rbt_url3").value;
        if(!regex_url.test(rebate_url3)){
            rebate_url3 = "http://" + rebate_url3;
        }
        var rebate_exp3 = $("deal_rbt_exp_date3").value;
        text += " - <a href=\""+rebate_url3+"\">$"+rbt_amount3+" rebate</a>";
        text += generate_rbt_expire_date(rebate_exp3);
    }
    var price = $("deal[price]").value;
    if(price != "" && regex_rational.test(price)){
        aaa += parseFloat(price);
        text += " = <b>$"+price+"</b>.";
    }
    var shipping_fee = $("deal[shipping_fee]").value;
    var shipping_desc = $("deal_shipping").value;
    if(shipping_fee != "" && regex_natural.test(shipping_fee)){
        aaa += parseFloat(shipping_fee);
    }
    if(shipping_desc != ""){
        text += shipping_desc+".";
    }
    else if(shipping_fee != "" && regex_natural.test(shipping_fee)){
        text += " shipping is $"+shipping_fee+".";
    }
    var title = $("deal_title").value;
    text = title+" for $"+aaa+text;
    if(!$("deal_merchant_id").value == ""){
        var merchant_name = $("deal_merchant_id").options[$("deal_merchant_id").options.selectedIndex].text;
        text = merchant_name+" has the "+text;
    }
    $("deal_abstract").value = text;
    return true;
}
function ajax_to_save_provider_id(idnum,deal_id){
    var provider_id = $('provider_id_'+idnum+'_'+deal_id).value;
    URL = "/manage/provider_id_checks/"+deal_id+"/save_provider_id?idnum="+idnum+"&provider_id="+provider_id;
    new Ajax.Request(URL, {method: 'post'});
    return false;
}
function ajax_to_check_no_provider_id(idnum,deal_id){
    URL = "/manage/provider_id_checks/"+deal_id+"/check_deal?idnum="+idnum;
    new Ajax.Request(URL, {method: 'post'});
    return false;
}
function ajax_to_save_grabber_id(deal_id){
    var provider_id = $('provider_id_3_'+deal_id).value;
    URL = "/manage/price_grabber_id_checks/"+deal_id+"/save_provider_id?provider_id="+provider_id;
    new Ajax.Request(URL, {method: 'post'});
    return false;
}
function ajax_to_check_no_grabber_id(deal_id){
    URL = "/manage/price_grabber_id_checks/"+deal_id+"/check_deal";
    new Ajax.Request(URL, {method: 'post'});
    return false;
}
function change_url_type(type_id,class_name){
    
    if(class_name == null || class_name == ""){
        class_name = "deal";
    }
    var deal_url = $(class_name+'_'+class_name+'_url');
    var deal_link_out_type = $(class_name + '_link_out_type');
    var deal_link_out_id = $(class_name + '_link_out_id');
    if(type_id == "1"){
        deal_url.disabled = true;
        deal_link_out_type.disabled = false;
        deal_link_out_id.disabled = false;
    }else if(type_id == "2"){
        deal_url.disabled = true;
        deal_link_out_type.disabled = true;
        deal_link_out_id.disabled = true;
    }else if(type_id == "3"){
        deal_url.disabled = false;
        deal_link_out_type.disabled = true;
        deal_link_out_id.disabled = true;
    }else if (type_id == "4"){
        deal_url.disabled = false;
        deal_link_out_type.disabled = true;
        deal_link_out_id.disabled = true;
    }
    else{
        //0
        deal_url.disabled = false;
        deal_link_out_type.disabled = true;
        deal_link_out_id.disabled = true;
    }
}

function should_select_series_checkbox(box){
    regx = /^\[\w+\]$/
    sku = $('deal_merchant_product_id').value
    if(box.checked == true && (sku !=  '' && !regx.test(sku))){
        alert("Should not select start series option when merhcant sku filled in")
    }
    
}

function add_link(entry_id)
{
    var info = prompt("Pleast enter an URL","http://");   
    if ((info != null) && (info != ''))
    {
        format_to_html_tag(entry_id,"<a href=\""+info+"\" target=\"_blank\">","</a>");
    }
}
function add_outlink(entry_id)
{
    var info = prompt("Pleast enter Out Link Id","");  
    if ((info != null) && (info != ''))
    {
        format_to_html_tag(entry_id,"<a href=\"@link_id="+info+"\" target=\"_blank\">","</a>");
    }
}
function add_sku_link(entry_id)
{
    var info = prompt("Pleast enter merchant SKU","");   
    if ((info != null) && (info != ''))
    {
        format_to_html_tag(entry_id,"<a href=\"@sku="+info+"\" target=\"_blank\">","</a>");
    }
}
function add_template_image(entry_id)
{
    var info = prompt("Pleast enter Image Id","");   
    if ((info != null) && (info != ''))
    {
        format_to_html_tag(entry_id,"<img src=\"@image="+info+"\" alt=\"\"/>","");
    }
}
function add_image(entry_id)
{
    var info = prompt("Pleast enter an Image URI","/");   
    if ((info != null) && (info != ''))
    {
        format_to_html_tag(entry_id,"<img src=\""+info+"\" alt=\"\"/>","");
    }
}

function format_to_html_tag(element_id,left_str,right_str) 
{   //deal_abstract
    var tag = document.getElementById(element_id); 
    //    var ubbLength = tag.value.length; 
    tag.focus(); 
    //    selection = get_select_text(tag)
    if(window.getSelection){
        selectedText = getTextFieldSelection(tag);//getTextFieldSelection(document.getElementById("inputTextArea"));
        if ((selectedText != null) && (selectedText != '')){
            tag.value = tag.value.substr(0,tag.selectionStart)+left_str+selectedText+right_str+tag.value.substring(tag.selectionEnd,tag.value.length);
        }else{
            tag.value = tag.value.substr(0,tag.selectionStart)+left_str+right_str+tag.value.substring(tag.selectionStart,tag.value.length);
        }
    }    
    else{
        if(typeof document.selection !="undefined") 
        {                        
            document.selection.createRange().text=left_str+document.selection.createRange().text+right_str;   
            document.selection.empty();  
        } 
        else 
        { 
            ubb.value=ubb.value.substr(0,ubb.selectionStart)+left_str+right_str+ubb.value.substring(ubb.selectionStart,ubbLength); 
        } 
    }  
}


function get_select_text(element){
    selectedText = ""    
    if(window.getSelection)
        selectedText = getTextFieldSelection(element);//getTextFieldSelection(document.getElementById("inputTextArea"));
    else{
        selectedText = document.selection.createRange().text;
    }  
    return selectedText
}

function getTextFieldSelection(e){
    //var oEvent=arguments.callee.caller.arguments[0];
    if(e.selectionStart != undefined && e.selectionEnd != undefined){
        return e.value.substring(e.selectionStart,e.selectionEnd);
    }else return "";
} 

function show_similar_deals(event,deal_id){
    deal_url = $('deal_deal_url').value ;
    if(deal_url == null ||deal_url == ""){
        alert("Please fill in store url input"); 
    }else{
        url = "/manage/deals/similar_deals?deal_url=" + deal_url
        if(deal_id != null){
            url = url + "&deal_id="+deal_id
        }
        openwindow(url,event) 
    } 
}

function desable_merchant_category(all_category){
    if(all_category == '1'){
        $('merchant_categories').hide();
    }else{
        $('merchant_categories').show();
    }
}

function show_edit_histories(deal_id,event){
    url = "/manage/edit_histories?deal_id=" + deal_id
    openwindow(url,event) 
}

function openwindow(url,event){
    var x,y = "";
    event = event || window.event;
    if(event.pageX || event.pageY){
        x = event.pageX;
        y = event.pageY;
    }else {
        x = event.clientX + document.body.scrollLeft - document.body.clientLeft;
        y = event.clientY + document.body.scrollTop - document.body.clientTop;
    }
  
    x = x - 230;
    new Ajax.Request(url,{method:'get',onComplete:function(response) {
            dhtmlwindow.open("broadcastbox", 
            "inline",
            response.responseText, 
            "Information", 
            "width=230px,height=370px,left="+x+",top="+y+",resize=0,scrolling=1", 
            "recal");
        }});
    return false;
}


function toggle_detail(obj_id)
{
    try {
        $(obj_id).toggle();
    }catch (e){}
}

//
// price_grabber.js
//
var activePrice = ''; // current showing price comparison popup id
var loadedPrice = {}; // object of price popups already loaded
var activeImg = ''; // current showing image
var loadedImg = {}; // object of price images already loaded
var loadSuccess = {};
var mouseOut = {}
function show_price_compare(id){
    var   divId = 'compare_'+id;
    //var  loadingDiv = 'loading_compare_'+id;
    if(activePrice != '' && activePrice != divId){
	new Effect.Fade(activePrice, {duration:0});
    }
    if(loadedPrice[divId]==1){ //if ajax query has already been called, then just show the div
    	activePrice = divId;
        new Effect.Appear(divId, {duration:0});
    }
    else{ //if query hasn't been called, then initialize ajax.updater and load the price comparison
        activePrice = divId;
        document.getElementById("dealprices").src="/compare_price?id="+id;
        loadedPrice[divId] = 1;
    }

}

function loadsucc(id,content)
{
    if(content.match(new RegExp('cb_table_main', 'img'))){
        var cssFragment='(?:<style>)((\n|\r|.)*?)(?:</style>)';
        var docHead=document.getElementsByTagName("head")[0];
        var css = content.match(new RegExp(cssFragment, 'img'));
        if(css){
            css=css.toString();
            var re = /(?:<style.*?id=[\"\'](.*?)[\"\'].*?>)([\S\s]*?)(?:<\/style>)|(?:<style>)([\S\s]*?)(?:<\/style>)/ig;
            var match;
            while(match = re.exec(css)){
                if(match[2]||match[3]){
                    var s0 = document.createElement("style");
                    var t;
                    if(match[1]){
                        var e=document.getElementById(match[1]);
                        if(e)e.parentNode.removeChild(e);
                        s0.setAttribute("id", match[1]);
                    }
                    s0.setAttribute("type","text/css");
                    if(match[2]) t=match[2];
                    if(match[3]) t=match[3];
                    if(s0.styleSheet)s0.styleSheet.cssText=t;//IE
                    else s0.appendChild(document.createTextNode(t));//W3C
                    docHead.appendChild(s0);
                }
            }
        }
        loadSuccess["compare_"+id] = true;
        hide_loadding(id);
        $("compare_"+id).update(content.replace(new RegExp(cssFragment, 'img'),""));

    }else{
        loadSuccess["compare_"+id] = false;
        hide_loadding(id);
        defult_info = ['<div id="default-box'+id+'" class="default-box" style="margin-left:100px;*+margin-left:0px;"><div class="default-slide-table-head">'];
        defult_info.push('<img class="img-link" src="/images/close-img-gray.jpg" onclick="Element.toggle(\'compare_'+id+'\')"/></div>');
        defult_info.push(' <div class="default-slide-table-body" align="center"><img id="tip-img" src="/images/customer_service.png" />There is no content</div></div>');
        $("compare_"+id).update(defult_info.join(''));
    }

}


var undefined;
function comparePirce(_id){
  if(loadSuccess["compare_"+_id] == undefined){//if in loadding
     show_loadding(_id);
   }
   show_price_compare( _id)
}

function close_price_compare(_id){
    new Effect.Fade(_id, {duration:0})
}

function cancleComparePirce(id){
  hide_loadding(id);
  close_price_compare("compare_"+id);
}
function show_loadding(id){
  Element.show('loadding_'+id);
}

function hide_loadding(id){
  Element.hide('loadding_'+id);
}

function generate_compare_price_htmls_inner(type_id,product_id){
    var cobrand_id = '1423';
    var rating_star_type = 0;
    //var cb_limit = 6;
    var open_link_type2 = 1;
    var show_link_price2 = 1;
    var head_title_type = '1';
    document.write('<scr'+'ipt src="http://ah.pricegrabber.com/cb_table.php?'+
        type_id+'='+product_id+
        '&dw=1'+
        '&cobrand_id='+cobrand_id+
        '&rst='+rating_star_type+
        '&slp='+show_link_price2+
        '&olt='+open_link_type2+
        //'&l='+cb_limit+
        '&w=350'+
        '&htt='+head_title_type+
        '"></scr'+'ipt>');
}

function show_price_grabber_info(id,img_url){
    var divId = 'pricegrabber_info_'+id;
    var img ;

    if(activeImg != '' && activeImg != divId){
        new Effect.Fade(activeImg, {duration:0});
    }
    if(loadedImg[divId]==1){ //if ajax query has already been called, then just show the div
        activeImg = divId;
        new Effect.Appear(divId, {
            duration:0
        });
    }
    else{ //if query hasn't been called, then initialize ajax.updater and load the price comparison
        if (/http/i.exec(img_url)){
            activeImg = divId;
            img = document.createElement("img");
            img.src = img_url;
            $(divId).appendChild(img);
            loadedImg[divId] = 1;
            new Effect.Appear(divId, {
                duration:0
            });
        }
    }
}


function mouseout(event,_id,eElem){
    e = event ? event : window.event;
    event_node = e.relatedTarget ? e.relatedTarget : e.toElement;
    if(event_node){
        while(event_node != eElem && event_node.nodeName != 'BODY'){
            event_node = event_node.parentNode;
        }
        if(event_node != eElem){
            close_price_compare(_id);
        }
    }
    return false;
} 

//
// site.js
//
function validator_keyword(){
    if ($('key_word').value == ""){
        alert("please input the key word");
        $('key_word').focus();
        return false;
    }
    return true;
}
function submit_email_friend_form(form){
    if($('email_friend_user_addr').value == ''){
        alert("Please enter sender email");
        return false;
    }
    if($('email_friend_addr1').value == '' && $('email_friend_addr2').value == '' && $('email_friend_addr3').value == ''){
        alert("Please enter at least one receiver email");
        return false;
    }
    if($('email_friend_title').value == '' && $('email_friend_content').value == ''){
        alert("Please enter title or content");
        return false;
    }
    form.onsubmit();
    return true;
}
function validator_submit_deal_form(){
    if($('submit_deal_deal_url').value == ''){
        alert('Please enter deal url');
        $('submit_deal_deal_url').focus();
        return false;
    }else if($('submit_deal_title').value == ''){
        alert('Please enter title');
        $('submit_deal_title').focus();
        return false;
    }
    return true;
}

function toggle_coupon_comment_from(coupon_id,if_good){
    $("comments" + coupon_id).hide();
    if (if_good)
    {
        $("comment1" + coupon_id).hide();
        $("comment0" + coupon_id).toggle();
    }
    else
    {
        $("comment0" + coupon_id).hide();
        $("comment1" + coupon_id).toggle();
    }
    var url = "/coupon_comments/new?coupon_id=" + coupon_id;
    if(if_good) url = url + "&good=yes";
    new Ajax.Request(url,{method:'get',onComplete:function(response) {
            if(if_good){
                $('comment0' + coupon_id).update(response.responseText);   
            }else{
                $('comment1' + coupon_id).update(response.responseText);   
            }
            
        }});
}

function request_coupon_comments(coupon_id){
    new Ajax.Request("/coupon_comments/index?coupon_id=" +coupon_id,{asynchronous:true, evalScripts:true});
}

function toggle_coupon_comments(coupon_id){
    $("comment1" + coupon_id).hide()
    $("comment0" + coupon_id).hide()
    $("comments" + coupon_id).toggle()
}


function generate_compare_price_htmls(type_id,product_id){
//    http://ah.pricegrabber.com/cb_table.php?masterid=92079704&dw=1&cobrand_id=1423&rst=0&slp=1&olt=1&w=300&htt=1
    var cobrand_id = '1423';
    var rating_star_type = 0;
    var cb_limit = 6;
    var open_link_type2 = 1;
    var show_link_price2 = 1;
    var head_title_type = '1';
    var width = 300;
    document.write('<scr'+'ipt src="http://ah.pricegrabber.com/cb_table.php?'+
        type_id+'='+product_id+
        '&dw=1'+
        '&cobrand_id='+cobrand_id+
        '&rst='+rating_star_type+
        '&slp='+show_link_price2+
        '&olt='+open_link_type2+
        '&w=' + width +
        '&l='+cb_limit+
        '&htt='+head_title_type+
        '"></scr'+'ipt>');

//    cobrand_id = '1423';
//    open_link_type2 = 1;
//    show_link_price2 = 1;
//    cb_width = '375';
//    head_title_type = '1';
//    head_bgcolor = 'FFFFFF';
//    sub_bgcolor = 'FFFFFF';
//    morerets_bgcolor = 'FFFFFF';
//    document.write('<scr'+'ipt src="http://ah.pricegrabber.com/cb_table.php?'+
//        type_id+'='+product_id+
//        '&dw=1'+
//        '&cobrand_id='+cobrand_id+
//        '&slp='+show_link_price2+
//        '&olt='+open_link_type2+
//        '&w='+cb_width+
//        '&htt='+head_title_type+
//        '&hbc='+head_bgcolor+
//        '&sbc='+sub_bgcolor+
//        '&mrbc='+morerets_bgcolor+
//        '"></scr'+'ipt>');
}

//sider bar
var ourInterval;
var scrollSpeed=30;
var scrollDistance=5;

function scrollStart(direct,content){
    ourInterval=setInterval("scroll"+direct+"('"+content+"')",scrollSpeed);
}

function scrollEnd(){
    clearInterval(ourInterval);
}

function scrollLeft(content){
    scrollPosterLeft(content);
    togglePosterArrowImg("left");
}

function scrollRight(content){
    scrollPosterRight(content);
    togglePosterArrowImg("right");
}

function scrollPosterLeft(content){
    document.getElementById(content).scrollLeft=document.getElementById(content).scrollLeft-scrollDistance;
}

function scrollPosterRight(content){
    document.getElementById(content).scrollLeft=document.getElementById(content).scrollLeft+scrollDistance;
}

function togglePosterArrowImg(direct){
    var imgDisable="vMid p1 disabled"; 
    var imgEnable="vMid p1"; 
    
    var  posterContent=document.getElementById("posterContent");
    var  arrowImgLeft=document.getElementById("left_side_image");
    var arrowImgRight=document.getElementById("right_side_iamge");
    
    var innerTable=document.getElementById("postertable");
    
    var isLeft=posterContent.scrollLeft==0;
    var isRightFlag=false;
    var isRight=innerTable.offsetWidth-posterContent.offsetWidth;
    if(!isLeft&&isRight+1>=posterContent.scrollLeft&&isRight-1<=posterContent.scrollLeft){
        isRightFlag=true;
    }
    arrowImgLeft.className = isLeft ? imgDisable : imgEnable;
    arrowImgRight.className = isRightFlag ? imgDisable : imgEnable;
}

var activeItem = ''

function init_active_item(poster_id){
    activeItem = poster_id;
    document.getElementById("sfItem"+poster_id).style.border="medium solid #FF9900";
    set_poster_position(poster_id);
}

function set_poster_position(poster_id){
    var td_offset = $("td"+poster_id).offsetLeft ;    
    if(td_offset >= 300){
        document.getElementById('posterContent').scrollLeft = td_offset - 300;}
    else{
        document.getElementById('posterContent').scrollLeft = 0 ;}
}

function after_click_link(poster_id){
    change_back_color(poster_id);
    request_poster_infos(poster_id);
    set_poster_position(poster_id);
}


function change_back_color(id){
    var  sfItem = document.getElementById("sfItem"+id); 
    if(activeItem != '' && activeItem != id){
        //document.getElementById("sfItem"+activeItem).style.borderColor = "#fff";
        document.getElementById("sfItem"+activeItem).style.border = "thin solid #FFFFFF";
    }
    //sfItem.style.borderColor = "#FF9900";
     sfItem.style.border="medium solid #FF9900";
    activeItem = id;
}

function request_poster_infos(poster_id){
    new Ajax.Request("/site/deal/ajax_show_poster?poster_id=" +poster_id,{method:'get',asynchronous:true, evalScripts:true});
}

var displayComparePrice = ''
function toggle_compare_price(element_id){
    if(displayComparePrice != '' && displayComparePrice != element_id && $("compare_price_"+displayComparePrice)){
        $("compare_price_"+displayComparePrice).hide();
        }
    if ($("compare_price_"+element_id)){
        $("compare_price_"+element_id).toggle();
    }
    displayComparePrice = element_id;
}

function show_full_deal_description(id){
    if($(id)){
        $(id).style.overflow="visible";
        $(id).style.height="auto";
        $("full_deal_button").hide();
        $("section_deal_button").show();
    }
}

function show_partial_deal_description(id){
    if($(id)){
      $(id).style.overflow="hidden";
      $(id).style.height="80px";
      $("full_deal_button").show();
      $("section_deal_button").hide();
    }
}

function if_show_deal_description_button(id){
    if($(id).offsetHeight > 112){
        show_partial_deal_description(id);
    }
    else{
        show_full_deal_description(id);
        $("section_deal_button").hide();
    }
}
